我在我的Facebook应用程序登录中使用Facebook SDK v4.8.0 for iOS。 (iPhone OS 9.3版本)Facebook浏览器登录重定向到应用程序后,处理程序不会被调用
以下是整合一些相关代码:
AppDelegate.swift
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)
return true
}
func applicationDidBecomeActive(application: UIApplication) {
FBSDKAppEvents.activateApp()
}
func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool {
return FBSDKApplicationDelegate.sharedInstance().application(application, openURL: url, sourceApplication: sourceApplication, annotation: annotation)
}
func application(application: UIApplication, openURL url: NSURL, options: [String: AnyObject]) -> Bool {
return FBSDKApplicationDelegate.sharedInstance().application(application, openURL: url,
sourceApplication: "UIApplicationOpenURLOptionsSourceApplicationKey",
annotation: "UIApplicationOpenURLOptionsAnnotationKey")
}
Login.Swift
@IBAction func btnFacebook(sender: UIButton) {
self.loginToFacebookWithSuccess({ (response) -> Void in
print("Success")
}) { (error) -> Void in
print("failure")
}
func loginToFacebookWithSuccess(successBlock:() ->(), andFailure failureBlock: (NSError?) ->()) {
let fbLoginManager : FBSDKLoginManager = FBSDKLoginManager()
fbLoginManager.loginBehavior = .SystemAccount
FBSDKLoginManager().logInWithReadPermissions(["public_profile", "email", "user_friends"], fromViewController: self, handler: { (result:FBSDKLoginManagerLoginResult!, error:NSError!) -> Void in
if error != nil {
print("error")
} else if result.isCancelled {
print("cancelled")
} else {
print("worked fine") // get Facebook user data here
}
})
}
当用户有未在设备中配置Facebook帐户,该应用程序将转到浏览器并提供Face书籍登录界面。一旦用户完成登录,浏览器将重定向到应用程序。直到这一点一切工作正常。
问题
当浏览器将用户重定向到应用程序,没有任何反应。 (没有处理程序成功或失败被称为)。只要用户点击浏览器中的“完成”,日志中将打印“取消”。但是,对于“取消”或“好的”(或者说“继续作为用户名”)重定向后没有任何反应。
任何线索?
让我知道,如果我错过了任何信息。
FB应用程序正在开发或生产?您正在使用的用户是作为测试人员添加的?你在所有委托方法上放置断点? – Wain
@Wain它正在开发中。我将其用作开发人员(设备上的XCode调试)。是的,尝试在所有委托方法上放置断点。处理程序没有在“取消”或“好”的情况下被调用。当我点击“完成”(设备Safari窗口左上角的按钮)时,代表被调用。 = result.isCancelled – viral