类型'GIDSignIn'的值没有成员'presentingViewController'。

18
我正在学习使用GoogleSignIn SDK(通过Cocoapods安装)向应用程序进行Google登录。我在pod文件中没有指定版本,它自动安装了GoogleSignIn(4.4.0)。根据文档here,要添加登录按钮,我们需要编写:

GIDSignIn.sharedInstance()?.presentingViewController = self

  // Automatically sign in the user.
  GIDSignIn.sharedInstance()?.restorePreviousSignIn()

但是在最新的 Xcode 版本 10.3 (10G8) 中,我遇到了错误。

Value of type 'GIDSignIn' has no member 'presentingViewController'
Value of type 'GIDSignIn' has no member 'restorePreviousSignIn'

我尝试搜索有关此更新版本的信息,但很遗憾没有找到。请帮助我整合GoogleSignIn。


是的,我已经导入了。 - Muhammad Danish Qureshi
如果我们没有导入GoogleSignIn,那么我们的错误将是“使用未解决的标识符'GIDSignIn'”。 - Muhammad Danish Qureshi
你使用的是哪个Xcode版本? - Sagar Chauhan
1
@MuhammadDanishQureshi 你需要使用哪个版本?GoogleSignIn (5.0.0)! - Sagar Bhut
1
@SagarBhut 的 pod update 对我很有用。感谢你给了我这个想法。 - Muhammad Danish Qureshi
显示剩余4条评论
3个回答

24

如果你正在使用Google登录v5.0,那么你的代码是正确的:


GIDSignIn.sharedInstance()?.presentingViewController = self

但是既然你安装了4.4.0版本,你应该接受Vitaly Shpinyov的答案


或者通过编辑您的Podfile将Google Sign-In升级到5.0或更高版本:
pod 'GoogleSignIn', '~> 5.0'

GIDSignIn.sharedInstance()?.presentingViewController = selfGIDSignIn.sharedInstance()?.presentingViewController = self - Threadripper

9
在您的ViewControllerviewDidLoad()方法中添加以下行:
GIDSignIn.sharedInstance()?.uiDelegate = self

并使ViewController遵循GIDSignInUIDelegate协议。


1
我遇到了一个错误,类型“GIDSignIn”没有成员“uiDelegate”,我没有使用cocoapods,并且由于某些项目依赖关系,我无法在项目中使用cocoapods。你能帮我吗? - Surbhi Garg
对我来说它是可行的,我尝试下载5.0版本,但是pod说找不到那个版本。因此,我必须坚持这种方式。 - Kwnstantinos Nikoloutsos

0
在 GoogleSignIn 5.0 版本中,您可以执行以下操作:
GIDSignIn.sharedInstance().clientID = FirebaseApp.app()?.options.clientID 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接