关于使用Facebook Javascript SDK Graph API获取用户新闻动态的技术问询
关于Facebook Graph API获取用户新闻动态的问题
首先得给你一个明确的结论:现在第三方应用已经完全无法获取用户Facebook首页的新闻动态(也就是首屏显示的混合内容)。
Facebook在几年前就彻底移除了read_stream这类能访问用户News Feed的权限,这是出于用户隐私保护和平台规则的重大调整——现在没有任何公开的权限允许第三方应用获取包含好友内容的首页动态,不管你的应用是针对webOS还是其他平台,这个规则都是统一的。
为什么你的测试代码没返回数据?
你写的这段代码:
FB.api( '/me', 'GET', {fields: 'feed.limit(10)'},function( response ){ console.log( response ); });
这里的feed字段对应的是用户自己发布到个人时间线的内容(包括自己发的帖子、别人@自己的内容),而不是首页的新闻动态。即便如此,你没拿到数据大概率是因为:
- 你没有在应用中申请并获得对应的权限(比如
user_posts),Facebook现在对这类数据访问权限管控极严,未申请权限的请求会返回空数据或者权限错误。 - 未审核的权限只能在测试用户账号下使用,如果你用的是普通用户账号,即便代码正确也拿不到数据。
如果你只是想获取用户自己发布的内容
如果你的需求是获取用户自己的帖子(而非首页混合动态),可以调整方案:
- 在用户登录时,明确请求
user_posts权限:
FB.login(function(loginRes) { if (loginRes.authResponse) { // 登录成功后调用API FB.api('/me/posts', {limit: 10}, function(apiRes) { console.log('用户自己的帖子:', apiRes); }); } }, {scope: 'user_posts'});
- 到Facebook开发者平台,给你的应用添加
user_posts权限,并提交应用审核——只有审核通过后,普通用户才能使用这个权限,测试阶段可以用平台添加的测试账号进行调试。
最后再强调一次
目前没有任何办法让第三方应用获取用户的Facebook首页新闻动态,这是平台的硬规则,不是代码或者权限配置的问题。如果你的核心需求必须依赖首页动态,可能需要重新规划产品功能方向了。
内容的提问来源于stack exchange,提问作者mcbeav




