使用 GIDSignIn 登录时出现“没有 URL 方案 com-google-gidconsent 的注册处理程序”错误

Posted

技术标签:

【中文标题】使用 GIDSignIn 登录时出现“没有 URL 方案 com-google-gidconsent 的注册处理程序”错误【英文标题】:"There is no registered handler for URL scheme com-google-gidconsent" error when singning in using GIDSignIn 【发布时间】:2015-12-03 01:02:02 【问题描述】:

我已经手动集成了google登录sdk(不是cocoapods)并且构建正常,但是当我运行项目时,登录后总是出现这个错误:

2015-09-07 15:44:14.071 Contacts++[82438:4826277] LaunchServices: ERROR: There is no registered handler for URL scheme com-google-gidconsent-google
2015-09-07 15:44:14.071 Contacts++[82438:4826277] LaunchServices: ERROR: There is no registered handler for URL scheme com-google-gidconsent-youtube
2015-09-07 15:44:14.072 Contacts++[82438:4826277] LaunchServices: ERROR: There is no registered handler for URL scheme com-google-gidconsent
2015-09-07 15:44:14.072 Contacts++[82438:4826277] LaunchServices: ERROR: There is no registered handler for URL scheme com.google.gppconsent.2.4.1
2015-09-07 15:44:14.072 Contacts++[82438:4826277] LaunchServices: ERROR: There is no registered handler for URL scheme com.google.gppconsent.2.4.0

这就是我使用 sdk 的方式。

首先,我按照https://developers.google.com/identity/sign-in/ios/sign-in?ver=swift 中的所有步骤进行操作。

代码: AppDelegate.swift

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool   
    // google
    // Initialize sign in
    GIDSignIn.sharedInstance().clientID = "<client id>"
    GIDSignIn.sharedInstance().delegate = self

    return true


func signIn(signIn: GIDSignIn!, didSignInForUser user: GIDGoogleUser!, withError error: NSError!) 

    if error == nil 
        let userID = user.userID
        let idToken = user.authentication.idToken
        let name = user.profile.name
        let email = user.profile.email

        print(userID, idToken, name, email)
     else 
        print(error.localizedDescription)
    


func signIn(signIn: GIDSignIn!, didDisconnectWithUser user: GIDGoogleUser!, withError error: NSError!) 


ViewController.swift

 override func viewDidLoad() 
        super.viewDidLoad()

        // google plus
        //GIDSignIn.sharedInstance().clientID = clientID
        GIDSignIn.sharedInstance().uiDelegate = self
        GIDSignIn.sharedInstance().signIn()
  

可能是什么问题?我正在使用 SDK 版本 2.2.0

【问题讨论】:

【参考方案1】:

您的实施没有问题。所有这些警告意味着每个 URL 方案引用的应用程序未安装在设备上。

如果您在模拟器上进行测试,您会一直遇到这些错误。但是,如果您在设备上进行测试,您可以验证如果您安装了相应的应用程序,错误就会消失。

例如,如果您的设备上有 Youtube 应用,您将看不到这条线:

2015-09-07 15:44:14.071 Contacts++[82438:4826277] LaunchServices: ERROR: There is no registered handler for URL scheme com-google-gidconsent-youtube

【讨论】:

【参考方案2】:
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.facebook.com"]];
        exit(0);
)

【讨论】:

请详细说明这是如何回答问题的。

以上是关于使用 GIDSignIn 登录时出现“没有 URL 方案 com-google-gidconsent 的注册处理程序”错误的主要内容,如果未能解决你的问题,请参考以下文章

谷歌使用 GIDSignin 多次登录

您必须指定 |clientID|对于 |GIDSignIn|尝试使用 Google 登录时出错

“GIDSignIn”类型的值没有成员“presentingViewController”

使用通用登录视图时出现“名称'django'未定义”错误?

登录时出现钥匙串错误

尝试使用 Parse PFFacebookUtils 登录 Facebook 时出现错误 307