使用react-native-fbsdk实现Facebook登录时如何获取用户个人主页链接
问题原因
你已经正确申请了user_link权限,但调用Facebook Graph API /me端口查询用户信息时,没有在请求字段中明确声明需要返回link字段,Graph API默认仅返回你主动指定的字段,因此即使有权限也无法获取到个人主页链接。
修复方案
1. 修改字段请求参数
找到getInfoFromToken方法中的PROFILE_REQUEST_PARAMS配置,在fields的字符串末尾添加link字段,修改后代码如下:
getInfoFromToken = token => { const PROFILE_REQUEST_PARAMS = { fields: { string: 'id,name,first_name,last_name,email,picture,link', }, }; const profileRequest = new GraphRequest( '/me', { token, parameters: PROFILE_REQUEST_PARAMS }, (error, user) => { if (error) { console.log('login info has error: ' + error); } else { this.setState({ userInfo: user }, () => console.log('result:', user); } }, ); new GraphRequestManager().addRequest(profileRequest).start(); };
2. 注意事项
- 开发模式下,仅应用的管理员、开发者、测试员账号可直接获取
link字段,正式上线前需要先在Facebook开发者平台提交user_link权限审核,审核通过后普通用户授权后才能正常返回该字段。 - 你当前登录时申请的权限列表
['email', 'public_profile', 'user_link']配置正确,无需修改。 - 现有登录逻辑代码中有一处语法笔误,
const accessToken = data.accessToken.toString();accessToken);末尾多余的accessToken);可删除,避免运行时报错。
修改完成后重新发起请求,返回的user对象中就会包含link属性,即为用户的Facebook个人主页链接。
内容的提问来源于stack exchange,提问作者Shahanshah Alam
相关产品推荐
相关产品推荐

