使用 Parse 登录 Facebook 不起作用

Posted

技术标签:

【中文标题】使用 Parse 登录 Facebook 不起作用【英文标题】:Facebook login using Parse not working 【发布时间】:2013-04-16 17:51:40 【问题描述】:

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

哦哦。发生错误:Error Domain=com.facebook.sdk Code=2 "The 操作无法完成。 (com.facebook.sdk 错误 2。)“ 用户信息=0x1d5bac20 com.facebook.sdk:ErrorLoginFailedReason=com.facebook.sdk:SystemLoginDisallowedWithoutError, com.facebook.sdk:ErrorSessionKey=, expireDate:(null),refreshDate:(null),尝试RefreshDate:0001-12-30 00:00:00 +0000,权限:(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 应用程序已全部设置完毕。

有什么线索吗?

【问题讨论】:

请看这个问题***.com/questions/15831610/… 【参考方案1】:

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

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

【讨论】:

您需要在您的设备(iPhone/模拟器)上执行此操作 对于那些仍然收到错误的人,请检查应用程序的捆绑ID是否与在Facebook应用程序中输入的相同。 太棒了。不知何故,隐私设置为“关闭”,这导致了错误。必须警告用户...!【参考方案2】:

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

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

最终奏效的是:

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

奇怪的错误。

希望这对某人有所帮助。

【讨论】:

【参考方案3】:

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

【讨论】:

【参考方案4】:

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

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

【讨论】:

【参考方案5】:

我从解析后端删除了我的 FB 访问密钥和秘密,它运行良好。

(解析错误??)

【讨论】:

【参考方案6】:

请确保您在 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];

【讨论】:

【参考方案7】:

要使其在 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()

【讨论】:

以上是关于使用 Parse 登录 Facebook 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Facebook 信息未填充 Parse 数据库

使用 Facebook 应用程序时 Facebook 登录回调不起作用 - Swift

Facebook登录按钮在本地主机上不起作用

Android:Facebook 登录不起作用

为啥IOS13用facebook登录不起作用?

Facebook 的 FirebaseUI 身份验证不起作用