gpt4 book ai didi

ios - 钥匙串(keychain)中的 GIDSignIn Auth 未保存

转载 作者:搜寻专家 更新时间:2023-10-31 22:49:16 24 4
gpt4 key购买 nike

我正在开发一个支持 Google Sing In 和 Google App Invite 的 iOS Swift 应用程序.为此,我使用 GoogleSignIn v2.2.0,如下所示:

func loginRequest(onSuccess successBlock: () -> Void, onError errorBlock: (String?) -> Void) {

var signIn = GIDSignIn.sharedInstance()
signIn.shouldFetchBasicProfile = true
signIn.allowsSignInWithWebView = false
signIn.allowsSignInWithBrowser = true
signIn.scopes = ["https://www.googleapis.com/auth/plus.login"]
signIn.delegate = self

if signIn.hasAuthInKeychain(){
signIn.signInSilently()
}else{
signIn.signIn()
}

}

func signIn(signIn: GIDSignIn!, didSignInForUser user: GIDGoogleUser!, withError error: NSError!) {
if (error == nil) {
// managing login data here
self.successBlock()
} else {
self.errorBlock(error.localizedDescription)
}
}

到这里一切都按预期工作,我能够成功登录。如上所述,接下来我需要的是使用需要先登录的 Google App Invite,因此我需要用户保持登录状态,仅此而已我从不调用 GIDSignIn.sharedInstance().signOut() 的原因。如果我在登录后立即调用我的邀请方法,它将按预期打开邀请对话框,但我遇到的问题仅在我的应用程序重新启动后以及 GIDSignIn.sharedInstance().hasAuthInKeychain() 总是返回错误。所以我的问题是:是否可以在应用程序从内存中释放后将身份验证保留在钥匙串(keychain)中并稍后使用。如果不是,真正让我感到困惑的是 signInSilently() 方法,它看起来毫无意义

最佳答案

我遇到了同样的问题。但是,我发现了有关 Google 登录的要点。
我用不同的原始方法编写了 [[GIDSignIn sharedInstance] signIn];[[GIDSignIn sharedInstance] signInSilently];

例如,

- (void)checkOAuth {
[GIDSignIn sharedInstance].uiDelegate = self;
if([GIDSignIn sharedInstance].hasAuthInKeychain) {
GIDGoogleUser *user = [GIDSignIn sharedInstance].currentUser;
if(!user) {
[[GIDSignIn sharedInstance] signInSilently];
}
}
}

- (void)didReceivedLogin {

[GIDSignIn sharedInstance].uiDelegate = self;
[GIDSignIn sharedInstance].scopes = @[@https://www.googleapis.com/auth/drive"];
// Google SignInを実行
[[GIDSignIn sharedInstance] signIn];

}

但是,我可以通过修复代码从 hasAuthInKeychain 获得 true。
首先,我改为在 ViewDidLoad 方法中编写 GIDSignIn 的新方法。它在我的应用程序中统一了有关 GIDSignIn 的状态。

希望对您有所帮助。

关于ios - 钥匙串(keychain)中的 GIDSignIn Auth 未保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32271629/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com