首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GIDSignIn当前用户在restorePreviousSignIn()之后为零

GIDSignIn当前用户在restorePreviousSignIn()之后为零
EN

Stack Overflow用户
提问于 2022-11-05 23:49:10
回答 1查看 33关注 0票数 0

我这里的问题是:这个共享实例被称为

代码语言:javascript
复制
GIDSignIn.sharedInstance.restorePreviousSignIn()

但是,当我试图检查当前用户时,呼叫后仍为零。

代码语言:javascript
复制
GIDSignIn.sharedInstance.currentUser != nil

我假设在检查用户是否为零之前可能需要适当的延迟。在检查用户是否为零之前,我如何正确地添加延迟或填充用户。

例:在检查GIDSignIn.sharedInstance.restorePreviousSignIn()之前确认GIDSignIn.sharedInstance.currentUser已经完成

代码语言:javascript
复制
 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框架参考

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-06 00:43:26

如果您在链接的文档中学习,您将能够看到restorePreviousSiginin是异步的,并且知道如何使用它。

func restorePreviousSignIn(callback: GIDSignInCallback? = nil) 回调 在完成时调用的GIDSignInCallback块。这个块将在主队列上异步调用。

其中,完成处理程序定义为:

typealias GIDSignInCallback = (GIDGoogleUser?, Error?) -> Void

您应该使用完成处理程序来处理尝试还原前一个登录的结果,而不是尝试在方法中同步进行。有点像

代码语言:javascript
复制
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")
    }
  }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74332291

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档