Facebook 和 Google 登录 - 冲突 (Xcode)
Posted
技术标签:
【中文标题】Facebook 和 Google 登录 - 冲突 (Xcode)【英文标题】:Facebook And Google Login - conflict (Xcode) 【发布时间】:2016-04-25 18:01:15 【问题描述】:不幸的是,我在这里阅读了一些类似的问题,但对我并没有太大帮助。
我有一个使用 Swift 的 Xcode 项目,目前,我已经集成了 Twitter 和 Facebook 登录。我也想要谷歌登录。到目前为止,我已经按照这些步骤进行操作,但我遇到了 2 个问题:
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) openURL
func - 这个也期待与 Google 相关的回报,但它目前返回 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)
所以,我需要帮助来处理这些问题。先感谢您!
【问题讨论】:
【参考方案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】:在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)
【讨论】:
感谢它的工作。请解释一下 let b = FBSDK... 赋值的目的???【参考方案3】:对我来说这个很有效
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个多小时。
【讨论】:
以上是关于Facebook 和 Google 登录 - 冲突 (Xcode)的主要内容,如果未能解决你的问题,请参考以下文章
iOS:同时使用 Facebook 和 Google,Google Plus 登录
Backand- 使用 facebook 和 google 登录错误
使用 facebook connect 登录 IOS 应用程序时出现冲突错误