Facebook登录使用Parse无法正常工作

时间:2013-04-16 17:51:40

标签: ios objective-c facebook parse-platform

我正在尝试使用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 =,   expirationDate:(null),refreshDate:(null),attemptsRefreshDate:0001-12-30 00:00:00 +0000,permissions:(null)>}

按下按钮时的代码几乎与Parse's tutorial

中的代码相同
- (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应用程序全部都设置好了。

任何线索?

7 个答案:

答案 0 :(得分:9)

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

修复很简单:设置 - >隐私 - > Facebook - >并检查你的应用程序状态。

答案 1 :(得分:4)

我在一台设备上遇到了同样的问题(iPhone 5S)。设置 - >隐私 - > Facebook是对的。 我有其他设备和iPhone sim一起工作正常。

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

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

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

    希望这有助于某人。

答案 2 :(得分:2)

见下面的答案。有时很奇怪,开关打开了。它有助于在系统偏好设置中重新登录Facebook。

答案 3 :(得分:0)

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

确保您的Facebook应用控制台中设置了您的权限。

答案 4 :(得分:0)

我从解析后端删除了我的FB访问密钥和秘密,它工作得很好。

(Parse bug ??)

答案 5 :(得分: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];
}

答案 6 :(得分:0)

要使其适用于 Swift 3.1 iOS 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()
}