1

我正在尝试使用 Parses SDK 为 Facebook 进行单点登录,但是当我按下登录按钮时出现此错误:

哦哦。发生错误:错误域=com.facebook.sdk 代码=2“操作无法完成。(com.facebook.sdk 错误 2。)”UserInfo=0x1d5bac20 {com.facebook.sdk:ErrorLoginFailedReason=com.facebook .sdk:SystemLoginDisallowedWithoutError, com.facebook.sdk:ErrorSessionKey=, expireDate: (null), refreshDate: (null), mappedRefreshDate: 0001-12-30 00:00:00 +0000, permissions:(null)>}

我点击按钮时的代码与Parse 教程中的代码几乎相同

- (IBAction)loginButtonTouchHandler {
    // The permissions requested from the user
    NSArray *permissionsArray = @[ @"user_about_me", @"user_birthday"];

    // Login PFUser using Facebook
    [PFFacebookUtils logInWithPermissions:permissionsArray block:^(PFUser *user, NSError *error) {
        [_activityIndicator stopAnimating]; // Hide loading indicator

        if (!user) {
            if (!error) {
                NSLog(@"Uh oh. The user cancelled the Facebook login.");
            } else {
                NSLog(@"Uh oh. An error occurred: %@", error);
            }
        } else if (user.isNew) {
            NSLog(@"User with facebook signed up and logged in!");
        } else {
            NSLog(@"User with facebook logged in!");
        }
    }];
}

我有我的 Facebook 应用程序和一切。

有什么线索吗?

4

7 回答 7

9

我在我的设备上遇到了同样的问题。同样的错误。

修复很简单:设置 -> 隐私 -> Facebook -> 并在那里检查您的应用状态。

于 2013-05-31T13:21:27.773 回答
4

我在一台设备(iPhone 5S)上遇到了同样的问题。设置 -> 隐私 -> Facebook 是正确的。我有其他设备以及 iPhone sim 都运行良好。

无论如何,我尝试重新启动并没有解决问题,还删除了应用程序并重新安装。

最终起作用的是以下内容:

  1. 在设置 -> 隐私 -> Facebook 下关闭应用程序的访问权限。
  2. 尝试从应用程序登录 FB。(当然失败了)。
  3. 在设置 -> 隐私 -> Facebook 下重新启用应用设置的访问权限。
  4. 尝试从现在成功的应用程序登录 FB。

奇怪的错误。

希望这可以帮助某人。

于 2013-12-02T16:11:32.263 回答
2

请参阅下面的答案。有时奇怪的是,开关打开了。它有助于在系统偏好设置中使用 Facebook 重新登录。

于 2013-09-25T21:28:52.980 回答
0

我从解析后端删除了我的 FB 访问密钥和秘密,效果很好。

(解析错误??)

于 2015-01-17T14:28:11.383 回答
0

传递一个空的权限数组 NSArray *permissionsArray = @[];

确保您的权限已在您的 Facebook 应用程序控制台中设置。

于 2014-10-08T21:23:34.630 回答
0

请确保您在 AppDelegate.m 上添加

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {

     return [[FBSDKApplicationDelegate sharedInstance] application:application openURL:url sourceApplication:sourceApplication annotation:annotation];
}

并添加

[FBSDKAppEvents activateApp];

- (void)applicationDidBecomeActive:(UIApplication *)application {
    [FBSDKAppEvents activateApp];
}
于 2015-05-21T10:42:00.013 回答
0

要使其在Swift 3.1iOS 10.3.1上运行,请确保您的应用委托中有以下方法:

仅适用于 Swift 3.1:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
  let configuration = ParseClientConfiguration {
       $0.applicationId = "XXXXX"
       $0.clientKey = "XXXXXX"
       $0.server = "https://yourserverparse.."
   }

   Parse.initialize(with: configuration)
   PFFacebookUtils.initializeFacebook(applicationLaunchOptions: launchOptions)

   return FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)
}

然后:

 func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {

    var isHandled:Bool;

    if #available(iOS 9.0, *) {
        isHandled = FBSDKApplicationDelegate.sharedInstance().application(app, open: url, sourceApplication: options[.sourceApplication] as! String!, annotation: options[.annotation])
    } else {
        // Fallback on earlier versions
        isHandled = FBSDKApplicationDelegate.sharedInstance().application(app, open: url, options: options)
    }

    return isHandled
}

然后:

func applicationDidBecomeActive(_ application: UIApplication) {
    FBSDKAppEvents.activateApp()
}
于 2017-04-10T14:48:25.907 回答