在iOS中集成Google和Facebook登录 - AppDelegate openURL

时间:2015-10-12 16:59:48

标签: ios xcode

我试图将Facebook和谷歌登录集成到我的应用程序中,但遇到问题:两者都需要将以下内容添加到Appdelegate中的openURL方法中:

return [GIDSignIn sharedInstance] handleURL:url
                           sourceApplication:sourceApplication
                                         annotation:annotation]];

return [FBSDKApplicationDelegate sharedInstance] application:application
                                                       openURL:url
                                             sourceApplication:sourceApplication
                                                    annotation:annotation
         ]]

无论如何都要让这两者正常合作。我已经在线查看,但答案很模糊,无法提供良好的解释

解决方案

添加了以下功能(从iOS 9开始):

return [[GIDSignIn sharedInstance] handleURL:url sourceApplication:sourceApplication annotation:annotation] || [[FBSDKApplicationDelegate sharedInstance] application:application openURL:url sourceApplication:sourceApplication annotation:annotation ];

2 个答案:

答案 0 :(得分:4)

使用以下代码......

- (BOOL)application:(UIApplication *)applicationopenURL:(NSURL *)url
      sourceApplication:(NSString *)sourceApplicationannotation:(id)annotation
    {
      if ([FBAppCall handleOpenURL:url sourceApplication:sourceApplication])
        return [FBSDKApplicationDelegate sharedInstance] application:application
                                                       openURL:url
                                             sourceApplication:sourceApplication
                                                    annotation:annotation
         ]];
      else

       return [GIDSignIn sharedInstance] handleURL:url
                           sourceApplication:sourceApplication
                                         annotation:annotation]];
    }

另一个答案..

- (BOOL)application:(UIApplication *)applicationopenURL:(NSURL *)url
  sourceApplication:(NSString *)sourceApplicationannotation:(id)annotation
{

     NSString *stringURL = [ url absoluteString];
    if([stringURL containsString:@"fb"])
    {


    return [[FBSDKApplicationDelegate sharedInstance] application:application
                                                          openURL:url
                                                sourceApplication:sourceApplication
                                                       annotation:annotation];
    }
    else
    {
        return [GPPURLHandler handleURL:url
                      sourceApplication:sourceApplication
                             annotation:annotation];

    }
}

答案 1 :(得分:1)

更新答案

func application(
            _ app: UIApplication,
            open url: URL,
            options: [UIApplication.OpenURLOptionsKey : Any] = [:]
        ) -> Bool {

        let urlString = url.absoluteString
        if urlString.contains("fb"){
            ApplicationDelegate.shared.application(
                app,
                open: url,
                sourceApplication: options[UIApplication.OpenURLOptionsKey.sourceApplication] as? String,
                annotation: options[UIApplication.OpenURLOptionsKey.annotation]
            )
        }
        else{
            
        }
            return GIDSignIn.sharedInstance().handle(url)
        }