Вход в Google перестанет работать после подписания приложения в Play Console.Android

Форум для тех, кто программирует под Android
Ответить
Гость
 Вход в Google перестанет работать после подписания приложения в Play Console.

Сообщение Гость »


Много ответов по теме, но большинство из них относятся к Firebase, и даже если я попробовал с Firebase или без него, я получил одну и ту же общую ошибку Exception com.google.android.gms.common.api.ApiException: 10: Консоль разработчика настроена неправильно..

Проблема:

Используя любую сборку (отладку, выпуск), и пока у нас есть CI-CD для развертывания и распространения приложения через AppCenter, все прекрасно работает во всех средах (тестирование, производство), но как только мы выпустим приложение в Google Play Консоль или используйте App Bundle Explorer в Play Console, чтобы загрузить AAB и загрузить APK для локального тестирования на устройстве. Вход в Google не работает.

Теперь, ломая голову после двух недель исследований и пытаясь понять, что это значит, я сделал следующее.
[*]Сброс ключа загрузки в консоли Google Play [*]Сброс ключа подписи приложения Google Play в консоли Google Play [*]Восстановлены учетные данные Android в Google Cloud Console (с воссозданием веб-клиента — даже попробовал автоматически созданный Firebase) [*]Проверено с помощью приложения Firebase. [*]Код из последней версии документации (https://developers.google.com/identity/ ... d/overview) [*]Видео Firebase на YouTube ( [*]Кодовая база Android Kotlin структурирована с использованием модулей, модуль аутентификации перемещен в приложение основного модуля (попытка исключить другое имя пакета в модуле) [*]Создан чистый проект Android Kotlin с помощью только кнопки входа в Google (та же ошибка) [*]Убедиться, что идентификатор клиента OAuth веб-клиента используется несколько раз (ну, в противном случае это будет иметь значимую ошибку) [*]Я отправил согласие на экран Google Could OAuth на утверждение, но оно все еще находится на рассмотрении. Я не думаю, что это проблема, поскольку мы запрашиваем конфиденциальные области.
У меня есть только один идентификатор клиента Google Cloud Android OAuth, использующий ключ загрузки SHA1 (я пытался добавить второй с помощью SHA1 для подписи Google Play, но ничего не изменилось). Это попытка решить проблему из этого ответа https://stackoverflow.com/a/41034093/122769. На самом деле я использую один и тот же SHA1 для отладки и выпуска. См. отчет о входе ниже. Еще один ответ, но опять же имеющий отношение к использованию Firebase (https://stackoverflow.com/a/68094280/122769). У меня такое ощущение, что я делаю что-то неправильно, когда мне нужен другой SHA1 для сборок; но не знаю, как к этому подойти (не знаю, как/куда добавить SHA1 для выпуска https://stackoverflow.com/a/39347133/122769)

./gradlew SigningReport:

Вариант: testRelease Конфигурация: конфигурация Магазин: some_path_to_store/release.jks Псевдоним: компания МД5: 57:МД5 ША1: 99:ША1 SHA-256: C3:SHA256 Действительно до: четверг, 9 месяца 2045 г. Вариант: prodRelease Конфигурация: конфигурация Магазин: some_path_to_store/release.jks Псевдоним: компания МД5: 57:МД5 ША1: 99:ША1 SHA-256: C3:SHA256 Действительно до: четверг, 9 месяца 2045 г. Код:

пакет com.eight.app импортировать android.content.IntentSender импортировать android.os.Bundle импортировать android.util.Log импортировать android.widget.TextView импортировать androidx.activity.result.ActivityResult импортировать androidx.activity.result.IntentSenderRequest импортировать androidx.activity.result.contract.ActivityResultContracts импортировать androidx.appcompat.app.AppCompatActivity импортировать androidx.appcompat.app.AppCompatDelegate импортировать com.google.android.gms.auth.api.identity.BeginSignInRequest импортировать com.google.android.gms.auth.api.identity.Identity импортировать com.google.android.gms.auth.api.identity.SignInClient импортировать com.google.android.gms.common.api.ApiException класс MainActivity : AppCompatActivity() { частный lateinit var errorText: TextView частный lateinit var googleButton: TextView частный lateinit var oneTapClient: SignInClient частный lateinit var SignInRequest: BeginSignInRequest частный вал ActivityResultLauncher = RegisterForActivityResult (ActivityResultContracts.StartIntentSenderForResult(), ::handleSignInResult) переопределить fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.a_start) AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO) errorText = findViewById(R.id.errorText) googleButton = findViewById(R.id.googleButton) oneTapClient = Identity.getSignInClient(это) SignInRequest = BeginSignInRequest.builder() .setPasswordRequestOptions( BeginSignInRequest.PasswordRequestOptions.builder() .setSupported(истина) .строить(), ) .setGoogleIdTokenRequestOptions( BeginSignInRequest.GoogleIdTokenRequestOptions.builder() .setSupported(истина) // Идентификатор клиента вашего сервера, а не идентификатор клиента Android. .setServerClientId(getString(R.string.your_web_client_id)) // Показать только учетные записи, которые ранее использовались для входа. .setFilterByAuthorizedAccounts(ложь) .строить(), ) // Автоматический вход в систему при получении ровно одного учетного документа. .setAutoSelectEnabled(истина) .строить() googleButton.setOnClickListener { oneTapClient.beginSignIn(signInRequest) .addOnSuccessListener(this) {результат -> пытаться { val IntentSenderRequest = IntentSenderRequest.Builder(result.pendingIntent.intentSender).build() ActivityResultLauncher.launch(intentSenderRequest) } catch (e: IntentSender.SendIntentException) { Log.e("oneTapSignIn", "Не удалось запустить пользовательский интерфейс One Tap: ${e.localizedMessage}") errorText.text = "oneTapSignIn Не удалось запустить пользовательский интерфейс One Tap: ${e.localizedMessage}" } } .addOnFailureListener(this) { e -> // Аккаунты Google не найдены. Просто продолжайте показывать пользовательский интерфейс для выхода из системы. Log.d("oneTapSignIn", e.localizedMessage) errorText.text = "oneTapSignIn addOnFailureListener Не удалось запустить пользовательский интерфейс One Tap: ${e.localizedMessage}" } } } частное развлечение handleSignInResult (результат: ActivityResult) { пытаться { val credential = oneTapClient.getSignInCredentialFromIntent(result.data) val idToken = credential.googleIdToken когда { idToken != ноль -> { // Получил токен идентификатора от Google. Используйте его для аутентификации // с вашим бэкэндом. errorText.text = "Токен успешного получения токена GOt $idToken" Log.d("onActivityResult", "Получил токен идентификатора.") } еще -> { // Не должно произойти. Log.d("onActivityResult", "Нет токена идентификатора!") errorText.text = "Нет токена идентификатора!" } } } catch (e: ApiException) { Log.d("onActivityResult", "ApiException No ID token!") errorText.text = "Исключение $e \n${e.localizedMessage} \n${e.message} \n ${e.cause} \n${e.stackTrace}!" } } } В идеале я бы хотел избегать Firebase, но в любом случае это все равно не работает. Есть ли способ получить более актуальную информацию об отладке? Любые идеи по поводу решений для тестирования будут оценены :)
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»