You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用FBSDKLoginButton登录FB SDK时遇com.facebook.sdk.core error 8求助

解决FBSDKLoginButton登录报错com.facebook.sdk.core error 8的办法

我之前也踩过这个com.facebook.sdk.core error 8的坑,折腾了好一阵才找到解决办法,给你几个实用的排查和修复方向:

  • 先检查权限的有效性
    你代码里请求的user_friends权限现在已经被Facebook严格限制——非游戏类应用基本无法获取这个权限,就算是游戏也有特定场景要求。这个无效权限很可能就是导致报错的直接原因。先把它去掉,只保留必要的权限试试:

    loginButton.readPermissions = @[@"public_profile", @"email"];
    

    另外要确认:在Facebook开发者后台的App Review板块,你申请的这些权限已经开启(测试阶段至少要确保测试用户能访问)。

  • 检查登录按钮的状态配置
    你把按钮的alpha设为0,还把center移到了屏幕外,等于按钮完全不可见且无法被用户点击。Facebook的登录流程要求用户主动触发,如果是依赖按钮本身的点击事件来启动登录,隐藏的按钮根本无法触发正常流程,进而引发错误。
    先临时把按钮显示出来测试:

    loginButton.alpha = 1;
    loginButton.center = self.view.center;
    

    等确认登录正常后,再考虑是否要通过代码触发登录(而不是依赖隐藏按钮)。

  • 核对应用的基础配置
    这是最容易忽略的点,一定要仔细检查:

    • 项目的Info.plist里必须配置正确的FacebookAppID、FacebookDisplayName,以及CFBundleURLTypes(其中CFBundleURLSchemes要包含fb<你的AppID>格式的Scheme)
    • Facebook开发者后台Settings > Basic页面里,iOS平台的Bundle ID要和你项目里的完全一致(大小写都不能错)
    • iOS 10+还要确保Info.plist里的ATS配置允许访问Facebook的HTTPS域名(现在ATS默认支持HTTPS,一般没问题,但如果有自定义配置要检查)
  • 如果不需要显示按钮,改用FBSDKLoginManager触发登录
    要是你本来就不想显示登录按钮,直接用代码触发登录会更可靠,避免隐藏按钮带来的异常。示例代码:

    FBSDKLoginManager *loginManager = [[FBSDKLoginManager alloc] init];
    [loginManager logInWithPermissions:@[@"public_profile", @"email"] fromViewController:self handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
        if (error) {
            NSLog(@"登录错误:%@", error.localizedDescription);
            return;
        }
        if (result.isCancelled) {
            NSLog(@"用户取消登录");
            return;
        }
        // 登录成功,获取用户信息
        if ([result.grantedPermissions containsObject:@"email"]) {
            [[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:@{@"fields": @"id, name, email"}]
             startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
                 if (!error) {
                     NSLog(@"用户信息:%@", result);
                 }
             }];
        }
    }];
    
  • 确认测试用户的权限
    确保你用来测试的账号是Facebook开发者后台Roles > Test Users里添加的测试账号,或者是应用的管理员/开发者账号——普通用户如果权限没通过审核,会无法请求相关权限,进而触发错误。

按照上面的步骤排查,基本就能解决这个error 8的问题了。

内容的提问来源于stack exchange,提问作者SimplyKiwi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:31:26