Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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 Facebook和Google使用Swift登录_Ios_Swift_Facebook_Google Signin - Fatal编程技术网

Ios Facebook和Google使用Swift登录

Ios Facebook和Google使用Swift登录,ios,swift,facebook,google-signin,Ios,Swift,Facebook,Google Signin,我在屏幕上有两个谷歌和Facebook的自定义登录按钮。下面是我在AppDelegate中编写的代码,它会导致问题,我将在代码之后解释 func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool { FBSDKApplicationDelegate.sharedInstance().app

我在屏幕上有两个谷歌和Facebook的自定义登录按钮。下面是我在
AppDelegate
中编写的代码,它会导致问题,我将在代码之后解释

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



        return true
    }
     func application(application: UIApplication,
        openURL url: NSURL, options: [String: AnyObject]) -> Bool {
            if #available(iOS 9.0, *) {
                return GIDSignIn.sharedInstance().handleURL(url,
                    sourceApplication: options[UIApplicationOpenURLOptionsSourceApplicationKey] as? String,
                    annotation: options[UIApplicationOpenURLOptionsAnnotationKey])
            } else {
                // Fallback on earlier versions
            }

            return true
    }
如果我编写此代码,单击此处的“确定”按钮后:

屏幕没有关闭,而是停留在那里。但是如果我们点击“允许”按钮,谷歌屏幕就可以完美工作。但如果我只使用此代码:

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



            return true
        }
然后删除其他功能,Facebook的“OK”按钮就可以正常工作了。当我添加此功能时,Facebook为什么不工作

func application(application: UIApplication,
            openURL url: NSURL, options: [String: AnyObject]) -> Bool {
                if #available(iOS 9.0, *) {
                    return GIDSignIn.sharedInstance().handleURL(url,
                        sourceApplication: options[UIApplicationOpenURLOptionsSourceApplicationKey] as? String,
                        annotation: options[UIApplicationOpenURLOptionsAnnotationKey])
                } else {
                    // Fallback on earlier versions
                }

                return true
        }

这个解决方案对我有效

func application(application: UIApplication,
    openURL url: NSURL, options: [String: AnyObject]) -> Bool {

        return FBSDKApplicationDelegate.sharedInstance().application(application, openURL: url, sourceApplication: options[UIApplicationOpenURLOptionsSourceApplicationKey] as! String, annotation: nil)  ||
            GIDSignIn.sharedInstance().handleURL(url,
            sourceApplication: options[UIApplicationOpenURLOptionsSourceApplicationKey] as? String,
            annotation: options[UIApplicationOpenURLOptionsAnnotationKey] as? String)
}

这个解决方案适合我

func application(application: UIApplication,
    openURL url: NSURL, options: [String: AnyObject]) -> Bool {

        return FBSDKApplicationDelegate.sharedInstance().application(application, openURL: url, sourceApplication: options[UIApplicationOpenURLOptionsSourceApplicationKey] as! String, annotation: nil)  ||
            GIDSignIn.sharedInstance().handleURL(url,
            sourceApplication: options[UIApplicationOpenURLOptionsSourceApplicationKey] as? String,
            annotation: options[UIApplicationOpenURLOptionsAnnotationKey] as? String)
}

//请先测试此条件,如果它是用于GIDSignIn标志值的worksput(或)condition int return语句


//请先测试此条件,如果它是GIDSignIn标志值的works put(或)condition int return语句

此函数在Swift 3.0中适用于iOS 8.0及以上版本

//对早期版本的回退

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

    return (FBSDKApplicationDelegate.sharedInstance().application( application,openURL: url,sourceApplication: sourceApplication,annotation: annotation) || GIDSignIn.sharedInstance().handleURL(url, sourceApplication: sourceApplication, annotation: annotation))
}

Swift 3.0中的以下功能适用于iOS 8.0及以上版本

//对早期版本的回退

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

    return (FBSDKApplicationDelegate.sharedInstance().application( application,openURL: url,sourceApplication: sourceApplication,annotation: annotation) || GIDSignIn.sharedInstance().handleURL(url, sourceApplication: sourceApplication, annotation: annotation))
}

@EICaptainv2.0我是否可以更新我的问题,因为在应用您的答案后,我仍然无法使用它out@EICaptainv2.0我可以更新我的问题吗?因为在应用了你的答案后,我仍然无法解决它