Проблема с диспетчером учетных данных Android: NoCredentialException: при начале входа в систему возникает ошибка ответаAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Проблема с диспетчером учетных данных Android: NoCredentialException: при начале входа в систему возникает ошибка ответа

Сообщение Anonymous »

Я использую Credential Manager API для входа пользователей в свое приложение для Android, как показано ниже:

Код: Выделить всё

lifecycleScope.launch {

val options = GetGoogleIdOption.Builder()
.setFilterByAuthorizedAccounts(false)
.setServerClientId(SERVER_CLIENT_ID)
.setAutoSelectEnabled(false)
.build()

val request = GetCredentialRequest.Builder().addCredentialOption(options).build()

val response = CredentialManager.create(requireContext())
.getCredential(requireContext(),request)

if(response.credential is CustomCredential && response.credential.type == GoogleIdTokenCredential.TYPE_GOOGLE_ID_TOKEN_CREDENTIAL) {
val googleCredential = GoogleIdTokenCredential.createFrom(response.credential.data)
Log.d(TAG, "onCreate: Signed In as: ${googleCredential.id}")
// continue with signed in...
}
}
Это хорошо работает в общем положительном сценарии, но я заметил ниже проблемы в некоторых других возможных сценариях:
Сценарий 1:< /strong> На моем устройстве выполнен вход в несколько учетных записей Google с разными идентификаторами Gmail. Когда я отключаю запрос на вход даже для одной учетной записи в настройках учетной записи устройства, как показано ниже:

Настройки > Google >
Управление учетной записью Google >Ваши подключения к
сторонним приложениям и службам >
Настройки >
Запросы на вход в учетную запись Google == Выкл./Отключено

.. приложение продолжает аварийно завершать работу со следующим исключением:

Код: Выделить всё

androidx.credentials.exceptions.NoCredentialException: During begin sign in, failure response from one tap: 16: User disabled the feature.
Чтобы решить эту проблему:
  • Изменение setFilterByAuthorizedAccounts() на true или false в этом сценарии сбой приложения не происходит.
    Очистка хранилища сервисов Google Play с помощью кода набора *#*#66382723#*#* также не влияет на это.
Любая помощь в решении этой проблемы приветствуется.
Сценарий 2:[/b] С тем же кодом, когда Я сохраняю setFilterByAuthorizedAccounts(false) и вхожу в систему с одним идентификатором Gmail за раз, а в следующий раз вхожу в систему с другим идентификатором Gmail, т. е. когда на устройстве существуют две учетные записи, с помощью которых можно подписать мое приложение: в, тогда, когда я меняю конфигурацию на автоматический/тихий вход, изменяя setAutoSelectEnabled(false)
на setAutoSelectEnabled(true), диалоговое окно входа скрывает другие идентификаторы Gmail, с которыми я не работал Я еще не вошел в систему и просит выбрать один из двух, с помощью которых я ранее вошел в систему (что ожидается, тихий вход сейчас не будет работать в соответствии с официальными документами, но). Теперь, после выбора входа в систему с любым из этих идентификаторов Gmail, когда я выхожу из системы, вызываяclearCredentialState(), и пытаюсь войти в систему снова в следующий раз, он снова предлагает выбрать один из тех же идентификаторов Gmail.
(И чтобы отключить/отменить идентификатор Gmail, который будет использоваться для автоматического входа в моем приложении, когда я вручную удаляю свое приложение из подключенных сторонних приложений из Google настройки аккаунта, все заканчивается меня в Сценарии 1.)
Любая помощь по отключению/отмене использования идентификатора Gmail для автоматического входа в моем приложении это ценится.

Подробнее здесь: https://stackoverflow.com/questions/782 ... -sign-in-f
Ответить

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

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

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

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

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