pls*_*pls 2 ios swift google-signin googlesigninapi
最初,我在检查是否已将数据保存到钥匙串中时遇到了问题。我找到了这篇文章并遵循了 BhavinBhadani 的建议:
每当您检查 if ([GIDSignIn sharedInstance].hasAuthInKeychain) 时,在此之前添加您的登录范围..
https://github.com/googlesamples/google-services/issues/27
这解决了我GIDSignIn.sharedInstance().hasAuthInKeychain()在用户之前成功登录然后杀死应用程序并重新运行后返回 true 的第一个问题。
但是现在我正在做以下事情:
let signIn = GIDSignIn.sharedInstance()
signIn.scopes = [Constants.GOOGLE_CLIENT_SCOPE, Constants.GOOGLE_OIDC_SCOPE]
if GIDSignIn.sharedInstance().hasAuthInKeychain() {
print("We have saved in keychain")
if let u = GIDSignIn.sharedInstance().currentUser {
getData(dataApi)
}
else {
// THIS CODE IS BEING SUCCESSFULLY HIT
GIDSignIn.sharedInstance().signInSilently()
getApplicationData(dataApi)
}
}
Run Code Online (Sandbox Code Playgroud)
然而,即使在做GIDSignIn.sharedInstance().signInSilently()了之后:GIDSignIn.sharedInstance().currentUser是零。
有没有人成功用于signInSilently()再次填充 currentUser 数据?
最近谷歌在谷歌登录 SDK v5.0.0 中改变了检查用户是否已经登录的方法。
更新对signInSilently 和hasAuthInKeychain 的调用以恢复PreviousSignIn 和hasPreviousSignIn。
所以代码看起来像
if(GIDSignIn.sharedInstance().hasPreviousSignIn()) {
GIDSignIn.sharedInstance()?.restorePreviousSignIn()
} else {
navigateToLogin()
}
Run Code Online (Sandbox Code Playgroud)
迁移指南:https : //developers.google.com/identity/sign-in/ios/quick-migration-guide
我在 git 中的那个问题中指出你还需要在hasAuthInKeychain像这样检查之前添加范围......这对我有用,希望对你也一样
let signIn = GIDSignIn.sharedInstance()
signIn.scopes = ["https://www.googleapis.com/auth/plus.login","https://www.googleapis.com/auth/plus.me"]
if (signin.hasAuthInKeychain) {
print("Signed in");
} else {
print("Not signed in");
}
Run Code Online (Sandbox Code Playgroud)
确保之后
GIDSignIn.sharedInstance().signInSilently(),调用getApplicationData(dataApi)填充数据会有一些延迟。
| 归档时间: |
|
| 查看次数: |
3214 次 |
| 最近记录: |