IOS Google登录"未安装登录处理程序"错误

时间:2015-07-15 03:32:23

标签: ios swift google-signin

我正在使用适用于IOS的Google Sign-In SDK 2.1.0。

在我的登录ViewController中我只需将google登录按钮添加到我的视图

    GIDSignIn.sharedInstance().uiDelegate = self
    self.googleLoginBtn = GIDSignInButton(frame: CGRectMake(0, 0, 200, 60))
    self.view.addSubview(self.googleLoginBtn)

我有2个测试设备,在其中一个安装了Youtube App的设备中,当点击登录btn时,打开Youtube应用程序并登录并返回我的应用程序。哪作得很完美。

在安装了一些旧应用的其他设备中,它会显示此错误

<GIDSignIn: 0x167b97b0> error: Error Domain=com.google.GIDSignIn Code=-3 "No sign-in handlers installed" UserInfo=0x17fe0bf0 {NSLocalizedDescription=No sign-in handlers installed}

所以...处理这个问题的常见做法是什么?

覆盖它并显示用户登录的webview?

或提示他们没有Google登录处理程序应用程序??

感谢。

//更新 我发现在工作的模拟器中,即使没有安装其他应用程序,它也会提供一个用于登录的viewController。

但似乎他们没有在我的应用程序中调用两个iphone(我确实设置了一个断点来验证这一点)

// Present a view that prompts the user to sign in with Google
func signIn(signIn: GIDSignIn!,
    presentViewController viewController: UIViewController!) {
  self.presentViewController(viewController, animated: true, completion: nil)
}

// Dismiss the "Sign in with Google" view
func signIn(signIn: GIDSignIn!,
    dismissViewController viewController: UIViewController!) {
  self.dismissViewControllerAnimated(true, completion: nil)
}

2 个答案:

答案 0 :(得分:0)

如果你看这个SDK的演示。

- (void)toggleAllowSignInWithBrowser:(UISwitch *)sender {
  [GIDSignIn sharedInstance].allowsSignInWithBrowser = sender.on;
}

- (void)toggleAllowSignInWithWebView:(UISwitch *)sender {
  [GIDSignIn sharedInstance].allowsSignInWithWebView = sender.on;
}

所以你必须将BOOL状态设置为on或off(即YES或NO)

[GIDSignIn sharedInstance].allowsSignInWithWebView = YES;

答案 1 :(得分:0)

嘿,我遇到了类似的错误,并找到解决此问题的方法。看看我对这个问题的回答: Not fetch Google user when handle sign in with another Google app using GIDSignIn

我发现当我必须使用自己的clientserverid时,它会给我一个错误或一个错误代码。你需要使用clientserverid吗?