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

Can't save IdentityProviders.GOOGLE credentials with SmartLock

我正在使用 Google+ 将我的用户登录到我们的应用程序。不过,实际的 G+ 登录发生在服务器上。我取回了一些用户数据,例如电子邮件和姓名。我用它来将用户凭据存储为 google 帐户。

保存时出现问题。在 "Auth.CredentialsApi.save" 中保存信誉的回调中,它 returns 没有解决方案,最终什么也没有发生。如果我从 creds 中删除 Google IdentityProvider,那么它会在没有密码的情况下保存。

有谁知道为什么在设置 IndentityProvider 时找不到解析?

在 Play Services 8+ 中,使用 Smart Lock [将 Google Sign-In 保存到用户的 Google 帐户不需要解决方案(确认 UI)API(即,凭据类型设置为 IdentityProviders.GOOGLE,电子邮件地址与设备上登录的地址匹配,并且用户未在设置中禁用保存)。请注意,当使用 API 保存时,您不能在凭据对象上同时设置帐户类型和密码——如果用户有密码,只需将其存储以用于身份验证。

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

检索此凭据时,您可以使用它来了解您有一个拥有现有帐户的用户,并且他们之前使用 Google 登录。然后,您可以为该回访用户自定义身份验证 UI,或者简单地为用户自动触发 Google Sign-In 流程,并在应用开始使用 [=] 时为他们提供回访用户体验Google Sign-In 库的最新版本中的 14=] 方法。这是完整的 code example.