Facebook和谷歌登录 - 冲突(Xcode)

时间:2016-04-25 18:01:15

标签: xcode facebook login appdelegate

我已经在这里阅读了一些类似的问题,不幸的是,这对我没什么帮助。

我有一个使用Swift的Xcode项目,目前,我已经集成了Twitter& Facebook登入。我也希望谷歌登录。我到目前为止已按照这些步骤进行了操作,但我已达到了2个问题:

  1. didFinishLaunchingWithOptions(在AppDelegate.swift中)。我已经将Facebook作为返回类型,但在Google的文档中,它说它需要return true。怎么做?这是代码:

    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    
    
    // Google Login
    var configureError: NSError?
    GGLContext.sharedInstance().configureWithError(&configureError)
    assert(configureError == nil, "Error configuring Google services: \(configureError)")
    
    //return true -> Expected by Google
    
    return FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions) }
    
  2. 2)openURL func - 这个也预计谷歌相关的回报,但它目前返回Facebook(根据他们的文档):

        func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool {
    
        return FBSDKApplicationDelegate.sharedInstance().application(application, openURL: url, sourceApplication: sourceApplication, annotation: annotation)
    
    
        // Required By Google?!
        return GIDSignIn.sharedInstance().handleURL(url, sourceApplication: sourceApplication, annotation: annotation)
    
    }
    

    所以,我需要帮助处理这些问题。先感谢您!

3 个答案:

答案 0 :(得分:2)

didFinishLaunchingWithOptions中取一个布尔变量,然后返回该变量,如

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {


   // Google Login
   var configureError: NSError?
   GGLContext.sharedInstance().configureWithError(&configureError)
   assert(configureError == nil, "Error configuring Google services: \(configureError)")

   let b = FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)

   return b 
}

对于另一个问题,你可以像这样处理它

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)
}

答案 1 :(得分:1)

解决方案是

func application(app: UIApplication, openURL url: NSURL, options: [String : AnyObject]) -> Bool {
            return
                //facebook
                FBSDKApplicationDelegate.sharedInstance().application(app, openURL: url,
                        sourceApplication: options[UIApplicationOpenURLOptionsSourceApplicationKey] as! String?,
                            annotation: options[UIApplicationOpenURLOptionsAnnotationKey])
                ||

                //google
                GIDSignIn.sharedInstance().handleURL(url,
                                                        sourceApplication: options[UIApplicationOpenURLOptionsSourceApplicationKey] as! String?,
                                                        annotation: options[UIApplicationOpenURLOptionsAnnotationKey])
}

答案 2 :(得分:1)

对我来说,这个工作

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.
        FIRApp.configure()

        FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)

        GIDSignIn.sharedInstance().clientID = FIRApp.defaultApp()?.options.clientID            
        return true
    }

func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
        return FBSDKApplicationDelegate.sharedInstance().application(application, open: url, sourceApplication: sourceApplication,annotation: annotation)
            || GIDSignIn.sharedInstance().handle(url, sourceApplication: sourceApplication, annotation: annotation)
    }
希望能帮助别人。正在努力超过3个小时。