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

iOS端React Native集成fbsdk-next仅申请public_profile权限问题求助

问题原因
  1. Facebook 权限审核限制
    除public_profile、email外,user_friends、user_posts均属于 Facebook 的高级权限,需要提交应用审核通过后才能面向普通用户开放。未过审的权限只会对应用后台添加的开发者、测试人员账号生效,如果你登录用的账号不在测试名单中,这些权限会被Facebook直接过滤,不会出现在授权申请列表里,自然也不会出现在grantedPermissions或declinedPermissions中。
  2. iOS 端配置错误
    如果Xcode项目的Info.plist中Facebook相关配置缺失或错误,会导致权限请求参数被截断,仅默认的public_profile权限会被正常提交。
  3. Profile.getCurrentProfile()接口限制
    该接口默认仅返回公开基础字段,即便你已经申请到了email等权限,接口也不会主动返回额外字段,需要单独调用Graph API拉取。
修复方案

1. 配置Facebook开发者后台

  • 进入Facebook开发者后台对应应用的「应用审核」-「权限和功能」页面:
    • 如果应用仅内部测试,将登录用的账号添加到「角色」-「测试人员」列表中,即可直接申请未过审的高级权限
    • 如果应用要面向全量用户上线,提交对应权限的审核申请,按要求提供使用场景说明等材料
  • 确认应用状态和权限状态匹配,开发模式下仅测试账号可使用未过审权限,上线模式下仅已过审权限可正常申请

2. 校验iOS端Info.plist配置

打开iOS项目下的Info.plist,确认以下配置完整且参数正确:

<key>CFBundleURLTypes</key>
<array>
  <dict>
    <key>CFBundleURLSchemes</key>
    <array>
      <string>fb{替换为你的Facebook应用ID}</string>
    </array>
  </dict>
</array>
<key>FacebookAppID</key>
<string>{替换为你的Facebook应用ID}</string>
<key>FacebookDisplayName</key>
<string>{替换为你的Facebook应用名称}</string>
<key>LSApplicationQueriesSchemes</key>
<array>
  <string>fbapi</string>
  <string>fbauth2</string>
  <string>fb-messenger-share-api</string>
  <string>fbshareextension</string>
</array>

3. 改用Graph API拉取用户完整信息

放弃Profile.getCurrentProfile()接口,登录拿到accessToken后调用Graph API主动请求需要的字段,示例代码如下:

import { AccessToken, GraphRequest, GraphRequestManager, LoginManager } from 'react-native-fbsdk-next';

// 登录逻辑
LoginManager.logInWithPermissions(['public_profile', 'user_friends', 'user_posts', 'email']).then(
  async (result) => {
    if (result.isCancelled) {
      alert('Login was cancelled')
      return
    }
    console.log("授权结果", result)
    const tokenData = await AccessToken.getCurrentAccessToken()
    if (!tokenData) return
    const { accessToken } = tokenData
    // 发起Graph API请求拉取用户信息
    const userInfoRequest = new GraphRequest(
      '/me',
      {
        accessToken: accessToken,
        parameters: {
          fields: {
            string: 'id,name,email,first_name,last_name,middle_name,picture.type(large)'
          }
        }
      },
      (error, userInfo) => {
        if (error) {
          console.error('拉取用户信息失败', error)
          return
        }
        console.log('完整用户信息', userInfo) // 此处可拿到email、first_name等你申请的字段
      }
    )
    new GraphRequestManager().addRequest(userInfoRequest).start()
  }
);

4. 验证测试

使用已添加到测试列表的Facebook账号登录,确认授权弹窗展示所有你申请的权限,返回的grantedPermissions中包含所有已同意的权限即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 11:57:00