【问题标题】:Still connected with Google仍与 Google 保持联系
【发布时间】:2018-04-13 12:55:36
【问题描述】:

我将 GIDButton 放在我的应用程序上。效果很好。

但是当用户完成登录并关闭应用程序时,他必须再次登录。这就是问题所在。

有人知道我怎样才能让用户保持登录状态吗?

谢谢

【问题讨论】:

  • 您需要静默登录GIDSignIn.sharedInstance().signInSilently()

标签: ios swift google-api google-signin gidsignin


【解决方案1】:

当用户使用 Google 登录时,Google SDK 会将用户的密码存储在钥匙串上。应用程序被杀死后,登录状态消失(但钥匙串项可能没有),为此您可以检查密码是否已存储在钥匙串中并再次以静默方式登录用户(无需用户交互)。

// Possibly show an activity indicator here
if GIDSignIn.sharedInstance().hasAuthInKeychain() {
    // Sign in user without interaction
    GIDSignIn.sharedInstance().signInSilently()
} else {
    // Show sign in flow
    GIDSignIn.sharedInstance().signIn()
}

稍后在您的代码中,处理委托回调:

extension YourLoginManager: GIDSignInDelegate {
    public func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error!) {
    // Possibly remove the activity indicator
    if user != nil {
        // Do stuff that a logged in user does
    }
}

总结 - 您不会在应用被终止时让用户保持登录状态,而是通过“静默”登录来重新创建登录状态。

附言如果您想注销用户并删除钥匙串项调用:GIDSignIn.sharedInstance().disconnect()

【讨论】:

  • 但是当我启动应用程序时,hasAuthInKeychain() 总是返回 false 而我已经连接了我的 Google 帐户
  • 您确定在静默登录之前没有断开用户连接吗?
  • 确保在检查hasAuthInKeychain() 和调用signInSilently() 之前,您已经设置了clientId、范围、委托等。
  • @Au Ris 你能解释一下 GIDSignIn.sharedInstance().signIn() 和 GIDSignIn.sharedInstance().signInSilently() 和 GIDSignIn.sharedInstance().disconnect() 和 GIDSignIn 之间的区别吗? sharedInstance().signOut()
猜你喜欢
  • 2019-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-12
  • 1970-01-01
  • 2020-12-25
  • 2019-03-17
  • 1970-01-01
相关资源
最近更新 更多