我这里的问题是:这个共享实例被称为
GIDSignIn.sharedInstance.restorePreviousSignIn()但是,当我试图检查当前用户时,呼叫后仍为零。
GIDSignIn.sharedInstance.currentUser != nil我假设在检查用户是否为零之前可能需要适当的延迟。在检查用户是否为零之前,我如何正确地添加延迟或填充用户。
例:在检查GIDSignIn.sharedInstance.restorePreviousSignIn()之前确认GIDSignIn.sharedInstance.currentUser已经完成
if(GIDSignIn.sharedInstance.hasPreviousSignIn() && GIDSignIn.sharedInstance.currentUser == nil) {
GIDSignIn.sharedInstance.restorePreviousSignIn()
}else{
print("user has no shared instance. User has not been prev signed in")
}
if (GIDSignIn.sharedInstance.currentUser != nil) {
}else{
print("user is nil")
}使用GoogleSignIn SDK GoogleSignIn框架参考
发布于 2022-11-06 00:43:26
如果您在链接的文档中学习,您将能够看到restorePreviousSiginin是异步的,并且知道如何使用它。
func restorePreviousSignIn(callback: GIDSignInCallback? = nil)回调 在完成时调用的GIDSignInCallback块。这个块将在主队列上异步调用。
其中,完成处理程序定义为:
typealias GIDSignInCallback = (GIDGoogleUser?, Error?) -> Void
您应该使用完成处理程序来处理尝试还原前一个登录的结果,而不是尝试在方法中同步进行。有点像
if(GIDSignIn.sharedInstance.hasPreviousSignIn() && GIDSignIn.sharedInstance.currentUser == nil) {
GIDSignIn.sharedInstance.restorePreviousSignIn() {
user, error in
if let user = user {
print(user) // handle the user info
} else {
print(error ?? "unknown error")
}
}
}https://stackoverflow.com/questions/74332291
复制相似问题