Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/105.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何处理从多个社交登录帐户返回应用的登录重定向?_Ios_Swift_Facebook_Twitter_Facebook Sdk 4.0 - Fatal编程技术网

Ios 如何处理从多个社交登录帐户返回应用的登录重定向?

Ios 如何处理从多个社交登录帐户返回应用的登录重定向?,ios,swift,facebook,twitter,facebook-sdk-4.0,Ios,Swift,Facebook,Twitter,Facebook Sdk 4.0,我正在制作一个应用程序,允许用户从谷歌、Facebook、twitter等不同平台登录。在应用程序委托中,我们必须为每个平台实现一个功能应用程序:openURL:options:。 目前我的函数是这样的 func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool { // Todo handle based

我正在制作一个应用程序,允许用户从谷歌、Facebook、twitter等不同平台登录。在应用程序委托中,我们必须为每个平台实现一个功能应用程序:openURL:options:。 目前我的函数是这样的

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

    // Todo handle based on the the arguments and return the bool value to be checked on iPHONE with facebook, google and twitter app
    let handled = FBSDKApplicationDelegate.sharedInstance().application(app, open: url, sourceApplication: options[UIApplicationOpenURLOptionsKey.sourceApplication] as! String!, annotation: options[UIApplicationOpenURLOptionsKey.annotation])

    GIDSignIn.sharedInstance().handle(url, sourceApplication:options[UIApplicationOpenURLOptionsKey.sourceApplication] as? String, annotation: [:])

    Twitter.sharedInstance().application(app, open: url, options: options)

    return handled
}
如上所述,我返回了handled,这是Facebook的重定向句柄结果。谷歌和推特也会返回bool值。 对于上述功能,返回Facebook、google和twitter的handle bool值的最安全和正确方法是什么?

试试这种方法

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

     let facebookDidHandle = FBSDKApplicationDelegate.sharedInstance().application(app, open: url, sourceApplication: options[UIApplicationOpenURLOptionsKey.sourceApplication] as! String!, annotation: options[UIApplicationOpenURLOptionsKey.annotation])

     let googleDidhandle = GIDSignIn.sharedInstance().handle(url, sourceApplication:options[UIApplicationOpenURLOptionsKey.sourceApplication] as? String, annotation: [:])

     let twitterDidHandle = Twitter.sharedInstance().application(app, open: url, options: options)


     return googleDidHandle || facebookDidHandle || twitterDidHandle
}

您不知道用户尝试的登录类型吗?在尝试登录之前设置一个变量,并在控件返回此函数时进行检查,以了解您要查找的结果类型。