我正在使用Google+将我的用户登录到我们的应用程序中。实际的G+登录发生在服务器上。我得到一些用户数据,如电子邮件和姓名。我使用这个来存储用户凭据作为一个谷歌帐户。
当我试图保存它时,问题就出现了。在"Auth.CredentialsApi.save"中保存信用的回调中,它没有返回任何解决方案,也没有发生任何事情。如果我从信用卡中删除Google IdentityProvider,那么它会在没有密码的情况下保存。
有人知道为什么在设置IndentityProvider时找不到分辨率吗?
在Play Services 8+中,使用智能锁API将Google Sign-In保存到用户的Google帐户不需要解析(确认UI)(即,凭证类型设置为IdentityProviders.GOOGLE
,电子邮件地址与设备上登录的电子邮件地址相匹配,用户未禁用保存设置)。请注意,使用API保存时,不能在凭证对象上同时设置帐户类型和密码——如果用户有密码,则只需将其存储用于身份验证。
具有此类型凭据的API调用应自动保存并立即可用,因此只需检查使用.setAccountTypes(IdentityProviders.GOOGLE)
构建的CredentialRequest
生成Auth.CredentialsApi.request()
时该凭据是否可用,以及保存的凭据是否显示在passwords.gogle.com上,并使用"with google"代替密码即可。
检索此凭据时,您可以使用它来知道您有一个拥有现有帐户的用户,并且他们以前曾登录过谷歌。然后,您可以为这个返回的用户自定义auth UI,或者简单地自动触发用户的Google登录流,并在应用程序开始使用最新版本的Google登录库中的Auth.GoogleSignInApi.silentSignIn()
方法时为他们提供返回的用户体验。下面是一个完整的代码示例。