iOS应用调用Facebook Graph API获取群组Feed时如何获取用户名?
解决Graph API获取群组Feed时缺少发帖用户username的问题
我之前也碰到过一模一样的情况,Facebook Graph API从v2.0版本开始,就默认不再返回用户的username字段了,尤其是在群组Feed这类场景里,得做些额外配置才能拿到。下面是具体的解决方法:
先确认并申请必要的权限
要获取用户的username,你的应用必须拥有对应的权限:- 如果发帖者是个人用户:需要
user_username权限(这属于敏感权限,得提交Facebook审核,说明你的使用场景后才能开通) - 如果发帖者是Facebook页面:需要
pages_username权限
你可以在应用的开发者后台「权限与功能」板块里申请这些权限,记得清晰说明你需要username是为了生成Messenger深度链接,能提高审核通过率。
- 如果发帖者是个人用户:需要
在API请求中显式指定需要的字段
默认调用/{group-id}/feed时,from对象只会返回id和name,你得通过字段扩展语法明确要求返回username。示例请求如下:GET /{group-id}/feed?fields=from{id,username,name},message,created_time这里的
from{id,username,name}就是告诉Graph API,我们需要from对象里包含这三个字段,这样返回结果里的from就会带上username(前提是权限通过且用户有公开的username)。处理username不存在的边界情况
不是所有用户都设置了公开的username,有些用户可能没设置,或者隐私设置限制了对外展示。这时候API返回的from对象里不会有username字段,建议做降级处理:- 如果拿到
username,就生成m.me/{username} - 如果没拿到,用用户的
id生成m.me/{user-id}——Messenger同样支持通过用户ID跳转,只是链接不如带username的友好而已。
- 如果拿到
内容的提问来源于stack exchange,提问作者ThangBM
相关产品推荐
相关产品推荐

