在iOS(Facebook和Instagram)中处理不同的URL方案

在iOS(Facebook和Instagram)中处理不同的URL方案,ios,appdelegate,openurl,Ios,Appdelegate,Openurl,我甚至不知道该如何定义这个问题,但问题来了 我有一个使用Facebook SDK进行用户登录的应用程序。我学习了Facebook授权教程。我不是100%确定它是如何工作的,但我的“AppDelegate.m”中的这一部分似乎很重要 - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication

我甚至不知道该如何定义这个问题,但问题来了

我有一个使用Facebook SDK进行用户登录的应用程序。我学习了Facebook授权教程。我不是100%确定它是如何工作的,但我的“AppDelegate.m”中的这一部分似乎很重要

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

    return [FBSession.activeSession handleOpenURL:url];
}
到目前为止还不错。现在我想为instagram实现一个类似的登录,这样用户就可以访问他们的照片。我运行这个示例时没有遇到任何问题()。当我试图把它导入我的项目时,我被卡住了。因为在instagram项目中,AppDelegate(IGAppDelegate)中还有一个函数

现在我不能使用这个功能(因为它是Facebook的一个副本) 有没有一种方法可以将facebook和instagram的这两个功能结合起来(对于不同的URL,可以使用“如果”)。还是我迷路了

PS:我注意到,当我调用我的facebook登录应用程序时,url类似于

fb4333597123414933://授权//#访问#令牌=Baagki2vhlxubandegkrdoc4gjwuzc2clqlazxz8ixebzbdeyjrd2otagzag2absgvehonkm6xjwzlcalgubgubguqupor6kxu9zbewusnzcue6boxyvx&expires\u in=5166254

在instagram中,它就像:

igfd725621c5e44198a5b8ad3f7a0ffa09://授权访问令牌=354172840.fd72562.bf6b3611632d4d00b6cef660ea9d9b6f

我想我找到了

[url方案]给出了这些特定的url方案


Swift:-

例如,在swift应用程序中同时使用Google+和Facebook,它们都需要appDelegate中的OpenURL方法

func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?,
    annotation: AnyObject?) -> Bool {

   println("URL : \(url)")
   if(url.scheme!.isEqual("fb1627825840806667")) {
        println("Facebook url scheme")

    return FBSDKApplicationDelegate.sharedInstance().application(
            application,
            openURL: url,
            sourceApplication: sourceApplication,
            annotation: annotation)

   } else {

        println("Google+ url scheme")

       return GIDSignIn.sharedInstance().handleURL(url, sourceApplication: sourceApplication, annotation: annotation)

   }
}

适用于Swift 2.0

//MARK: FACEBOOK , GOOGLE CALLBACK URL METHOD
    //google-Firebase signin - IOS 8
    func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool
    {
        let googleDidHandle = GIDSignIn.sharedInstance().handleURL(url, sourceApplication: sourceApplication!, annotation: annotation)

        let facebookDidHandle = FBSDKApplicationDelegate.sharedInstance().application(application, openURL: url, sourceApplication: sourceApplication, annotation: annotation)

        return facebookDidHandle || googleDidHandle
    }

    //google-Firebase signin - IOS 9
    @available(iOS 9.0, *)
    func application(application: UIApplication,
                     openURL url: NSURL, options: [String: AnyObject]) -> Bool {

        let facebookDidHandle = FBSDKApplicationDelegate.sharedInstance().application(application, openURL: url, sourceApplication: options[UIApplicationOpenURLOptionsSourceApplicationKey] as! String, annotation: options[UIApplicationOpenURLOptionsAnnotationKey])

        let googleDidHandle = GIDSignIn.sharedInstance().handleURL(url, sourceApplication: options[UIApplicationOpenURLOptionsSourceApplicationKey] as! String, annotation: options[UIApplicationOpenURLOptionsAnnotationKey])

        return facebookDidHandle || googleDidHandle
    }

您在输入图像描述中输入了什么无需。URL方案很重要。
func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?,
    annotation: AnyObject?) -> Bool {

   println("URL : \(url)")
   if(url.scheme!.isEqual("fb1627825840806667")) {
        println("Facebook url scheme")

    return FBSDKApplicationDelegate.sharedInstance().application(
            application,
            openURL: url,
            sourceApplication: sourceApplication,
            annotation: annotation)

   } else {

        println("Google+ url scheme")

       return GIDSignIn.sharedInstance().handleURL(url, sourceApplication: sourceApplication, annotation: annotation)

   }
}
//MARK: FACEBOOK , GOOGLE CALLBACK URL METHOD
    //google-Firebase signin - IOS 8
    func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool
    {
        let googleDidHandle = GIDSignIn.sharedInstance().handleURL(url, sourceApplication: sourceApplication!, annotation: annotation)

        let facebookDidHandle = FBSDKApplicationDelegate.sharedInstance().application(application, openURL: url, sourceApplication: sourceApplication, annotation: annotation)

        return facebookDidHandle || googleDidHandle
    }

    //google-Firebase signin - IOS 9
    @available(iOS 9.0, *)
    func application(application: UIApplication,
                     openURL url: NSURL, options: [String: AnyObject]) -> Bool {

        let facebookDidHandle = FBSDKApplicationDelegate.sharedInstance().application(application, openURL: url, sourceApplication: options[UIApplicationOpenURLOptionsSourceApplicationKey] as! String, annotation: options[UIApplicationOpenURLOptionsAnnotationKey])

        let googleDidHandle = GIDSignIn.sharedInstance().handleURL(url, sourceApplication: options[UIApplicationOpenURLOptionsSourceApplicationKey] as! String, annotation: options[UIApplicationOpenURLOptionsAnnotationKey])

        return facebookDidHandle || googleDidHandle
    }