我在我的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