无法使用SmartLock保存IdentityProviders.GOOGLE凭据

时间:2016-01-04 17:37:47

标签: android credentials google-plus-signin google-smartlockpasswords

我正在使用Google+将我的用户登录到我们的应用中。然而,实际的G +签名发生在服务器上。我收回了一些用户数据,如电子邮件和姓名。我正在使用它将用户凭据存储为Google帐户。

当我尝试保存它时会出现问题。在保存“Auth.CredentialsApi.save”中的信用的回调中,它不返回任何解决方案,并且没有任何结果发生。如果我从信用卡中删除Google IdentityProvider,则会在没有密码的情况下保存。

有没有人知道为什么在设置IndentityProvider时找不到分辨率?

1 个答案:

答案 0 :(得分:2)

在Play Services 8+中,使用Smart Lock API将Google登录保存到用户的Google帐户时无需解析(确认用户界面)(即,凭据的类型设置为IdentityProviders.GOOGLE电子邮件地址与在设备上登录的电子邮件地址匹配,并且用户未在设置中禁用保存)。请注意,使用API​​保存时,您无法在凭证对象上同时设置帐户类型和密码 - 如果用户只有密码,则只需将其存储以进行身份​​验证。

具有此类凭据的API调用应自动保存并立即可用,因此,在Auth.CredentialsApi.request()使用CredentialRequest构建.setAccountTypes(IdentityProviders.GOOGLE)时,请检查此凭据是否可用并且保存的凭据显示在passwords.google.com上,并且“使用Google”代替密码。

检索此凭据时,您可以使用它来了解您是否拥有拥有现有帐户的用户,并且之前已通过Google登录。然后,您可以为此返回用户自定义auth UI,或者只是为用户自动触发Google登录流程,并在应用程序使用最新版本的Auth.GoogleSignInApi.silentSignIn()方法开始时为用户提供返回的用户体验Google登录库。这是一个完整的code example