Facebook和谷歌登录 - 冲突(Xcode)
问题描述:
我读过一些类似的问题,不幸的是,这并没有真正帮助我很多。Facebook和谷歌登录 - 冲突(Xcode)
我有一个使用Swift的Xcode项目,目前我已经整合了Twitter & Facebook登录。我也想要Google登录。我遵循的步骤,到目前为止,但我已经达到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 - 这其中还预计,谷歌相关的回报,但它目前返回的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)
}
所以,我需要这样帮助处理这些。先谢谢你!
答
对我来说这个人工作
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个小时。
答
在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)
}
答
的解决方案是
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])
}
感谢它的工作。你能解释让b = FBSDK ......任务的目的吗? –