Ios 升级到SDK 4.1后,Facebook登录失败(始终取消)
我已经在iOS应用程序中将Facebook SDK从3.21.1升级到4.1(已经上线) 我仔细地遵循了升级指南,并实现了新的登录方法。我使用的代码是Facebook文档中提供的代码 但升级后,每次尝试登录(设备或模拟器、webview或Facebook应用程序)时,我都可以成功完成登录流程,但当我返回应用程序时,登录不会返回任何错误,而是返回FBSDKLoginManager登录结果“isCancelled” 作为一种解决方法,我尝试实现应用程序邀请,它不需要登录,但我被控制台中的“尝试在FB中进行身份验证”卡住了。。。这里也不走运 因此,我猜这与身份验证回退和info.plist中的URL方案有关,但我在那里进行了双重检查,数据(在升级之前工作正常)与Facebook文档中所示的数据相同 有人有任何线索吗?? 谢谢 我已经检查过的内容:Ios 升级到SDK 4.1后,Facebook登录失败(始终取消),ios,facebook,swift,facebook-sdk-4.0,Ios,Facebook,Swift,Facebook Sdk 4.0,我已经在iOS应用程序中将Facebook SDK从3.21.1升级到4.1(已经上线) 我仔细地遵循了升级指南,并实现了新的登录方法。我使用的代码是Facebook文档中提供的代码 但升级后,每次尝试登录(设备或模拟器、webview或Facebook应用程序)时,我都可以成功完成登录流程,但当我返回应用程序时,登录不会返回任何错误,而是返回FBSDKLoginManager登录结果“isCancelled” 作为一种解决方法,我尝试实现应用程序邀请,它不需要登录,但我被控制台中的“尝试在FB
- 我没有更改info.plist,它已经设置为使用Facebook SDK,并且在升级之前运行良好
- 在此升级之前,我用于登录的用户帐户也运行良好
- 在登录过程之前或之后,我没有任何currentAccessToken
- 多亏了及其,我在通话中发现了错误。我刚刚犯了Swift中最愚蠢的错误。在不太可能的情况下,像我这样愚蠢的人读到了这篇文章,下面是Swift中的3个调用,您应该将它们添加到AppDelegate.Swift中。它们经过测试并工作:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// Do what you have to do but at the end, instead of 'return true', put :
return FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)
}
func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject?) -> Bool {
return FBSDKApplicationDelegate.sharedInstance().application(application, openURL: url, sourceApplication: sourceApplication, annotation: annotation)
}
func applicationDidBecomeActive(application: UIApplication) {
FBSDKAppEvents.activateApp()
}
感谢你的帮助。谢谢你。 这里我只是更新Swift 3.1的答案
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
return FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)
}
func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
return FBSDKApplicationDelegate.sharedInstance().application(application, open: url as URL!, sourceApplication: sourceApplication, annotation: annotation)
}
func applicationDidBecomeActive(application: UIApplication) {
FBSDKAppEvents.activateApp()
}
是的,别忘了写:
import FBSDKCoreKit
应用内委托。调用
FBSDKLoginManagerLoginResult
以始终返回的另一个原因已被取消:如果应用(正在开发)请求某些权限,则用户不是此应用的列表开发人员,并且FaceBook尚未批准该应用的这些权限,它将始终返回isCancelled
我找到了解决方案,问题是您没有完成Facebook登录过程
当您发出facebook登录请求,然后用户通过facebook应用程序使用登录时,facebook应用程序将再次打开您的应用程序并调用
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any] = [:]) -> Bool
在app delegate上,要完成此过程,您需要通过以下方式向facebook SDK传递来自facebook的URL:
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any] = [:]) -> Bool {
return FBSDKApplicationDelegate.sharedInstance().application(app, open: url, options: options) == true {
}
然后,您将看到登录请求将返回访问令牌,并且不会被取消。试试这个,我发现这个问题只适用于iOS-8,iOS-9工作正常。你知道吗?@我想:请注意,iOS 8在AppDelegate
中使用了另一个函数。它是func应用程序(application:UIApplication,open url:url,sourceApplication:String?,annotation:Any)->Bool