升级到SDK 4.1后,Facebooklogin失败(总是被取消)

我已经将iOS SDK的3.21.1版本升级到了4.1版本(已经存在)。

我仔细地关注了升级指南,并实施了新的login方法。 我使用的代码是Facebook文档中提供的代码。

但自升级以来,每次我尝试login(设备或模拟器,webview或Facebook应用程序),我可以成功通过loginstream程,但是当我回到我的应用程序,login不会返回任何错误,但返回FBSDKLoginManagerLoginResult“isCancelled”。

作为一个解决方法,我试图实现应用程序邀请,这不需要login,但我坚持在控制台中“尝试在FB中进行身份validation”…在这里也没有运气。

所以我猜这跟info.plist中的authentication回退和URLscheme有关,但是我在那里再次检查,数据(在升级之前工作正常)与Facebook文档中指出的相同。

任何人有任何线索? 谢谢!

我已经检查:

  • 我没有更改已经设置为使用Facebook SDK的info.plist,并在升级前正常工作。
  • 用于login的用户帐户在升级之前也工作正常。
  • login过程之前或之后,我没有任何currentAccessToken。

感谢Dheeraj及其对类似问题的回答 ,我在调用中发现错误。 我只是在Swift中犯了最愚蠢的错误。 在这个不太可能发生的事情中,有人像我读的那样愚蠢,下面是Swift中的3个调用,你应该添加到你的AppDelegate.swift中。 他们正在testing和工作:

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() } 

大拇指为您的帮助冬季化。 并感谢Dheeraj bhai。 这里我只是更新了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始终返回isCancelled另一个原因是:如果应用程序(在开发中)要求某些权限,用户不是此应用程序的列表开发人员,FaceBook尚未批准这些权限的应用程序,它将总是返回isCancelled