我对 FBSDKLoginManagerRequestTokenHandler 有疑问,因为它应该被调用,但事实并非如此。
let login = FBSDKLoginManager()
login.logInWithReadPermissions(["email"]) { (result, error) in
// should be retuned here after dismissing Safari, as I understood, but app never call this block.
}
它在第一步运行完美,所以应用程序打开 safari 并且我能够在 Facebook 上登录。
它说“应用程序已被授权”,我点击了 Safari 上的确定按钮,然后我看到一条警报,上面写着“在我的应用程序中打开此页面”,我点击打开并没有任何反应。我的意思是没有回电。
细节:
iPhone 6 plus 与 iOS 9.2.1
pod 'Facebook-iOS-SDK', '~>4.1'
我注意到我的日志中有此错误:
-canOpenURL: failed for URL: "fbauth://authorize/?client_id=1150389881653102&default_audience=friends&display=touch&e2e=%7B%22init%22%3A1459873693399%7D&legacy_override=v2.3&redirect_uri=fbconnect%3A%2F%2Fsuccess&response_type=token%2Csigned_request&return_scopes=true&scope=email&sdk=ios&sdk_version=4.1.0&state=%7B%22com.facebook.sdk_client_state%22%3Atrue%2C%223_method%22%3A0%2C%220_auth_logger_id%22%3A%228FB19521-A8ED-49DA-A7DC-E5382029252C%22%7D" - error: "This app is not allowed to query for scheme fbauth"
像这里建议的那样,将数据添加到 plist 没有帮助。我已经添加了这个:
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fbapi</string>
<string>fb-messenger-api</string>
<string>fbauth2</string>
<string>fbshareextension</string>
</array>
我在应用程序委托中有这个:
public func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool
{
return self.applicationManager.application?(application, openURL: url, sourceApplication: sourceApplication, annotation: annotation) ?? false
}
但看到它在 iOS 9 中已被弃用