Не удается сохранить учетные данные IdentityProviders.GOOGLE с помощью SmartLock

Я регистрирую своих пользователей в нашем приложении с помощью Google+. Фактический вход G+ происходит на сервере. Я возвращаю некоторые пользовательские данные, такие как электронная почта и имя. Я использую это для хранения учетных данных пользователей в качестве учетной записи Google.

Проблема возникает, когда я пытаюсь сохранить ее. При обратном вызове для сохранения кредитов в "Auth.CredentialsApi.save" он не возвращает разрешение и ничего не происходит. Если я удалю Google IdentityProvider из кредитов, он будет сохранен без пароля.

Кто-нибудь знает, почему разрешение не найдено при установленном IndentityProvider?

1 ответ

Решение

В Play Services 8+ не требуется разрешение (пользовательский интерфейс подтверждения) для сохранения входа Google в учетную запись Google пользователя с помощью API Smart Lock (т. Е. Тип учетных данных установлен на IdentityProviders.GOOGLE и адрес электронной почты совпадает с одним из зарегистрированных на устройстве, и пользователь не отключил сохранение в настройках). Обратите внимание, что вы не можете установить тип учетной записи и пароль для объекта учетных данных при сохранении с помощью API - если у пользователя есть пароль, просто сохраните его для аутентификации.

Вызов API с учетными данными этого типа должен автоматически сохраняться и быть доступным немедленно, поэтому просто убедитесь, что эти учетные данные доступны при создании Auth.CredentialsApi.request() используя CredentialRequest построен с .setAccountTypes(IdentityProviders.GOOGLE) и что сохраненные учетные данные отображаются на https://passwords.google.com/ и вместо пароля используется "с Google".

При получении этих учетных данных вы можете использовать их, чтобы знать, что у вас есть пользователь с существующей учетной записью, и он ранее входил в Google. Затем вы можете настроить пользовательский интерфейс авторизации для этого возвращающегося пользователя или просто автоматически запустить поток входа в Google для этого пользователя и предоставить ему возвращающийся пользовательский интерфейс, когда приложение начнет использовать Auth.GoogleSignInApi.silentSignIn() метод в последней версии библиотеки Google Sign-In. Вот полный пример кода.

Другие вопросы по тегам