【问题标题】:Getting Facebook timeline获取 Facebook 时间线
【发布时间】:2025-12-23 03:10:16
【问题描述】:

我正在从 Facebook 获取我的时间线,并且我成功地能够获取我的时间线,但是当我使用朋友的 Facebook 帐户登录时,我收到了以下错误-

{
  "error": {
    "message": "(#200) Requires extended permission: read_stream", 
    "type": "OAuthException", 
    "code": 200
  }
}

我是 Facebook 开发者应用程序的管理员,但我的朋友不是。 我已经从 Facebook 批准了以下权限(见附件截图)

以下是我在代码中使用的权限-

FBSession* sess = [[FBSession alloc] initWithPermissions:[NSArray arrayWithObjects:@"public_profile",@"user_friends",@"user_birthday",@"email",@"user_education_history",@"user_work_history",@"user_hometown",@"read_stream",@"user_about_me",@"user_posts",@"publish_actions",nil]];

这是获取时间线的代码-

 NSString *urlStringFacebook = [NSString stringWithFormat:@"https://graph.facebook.com/me/home?format=json&&access_token=%@&&limit=90",[[FBSession activeSession] accessTokenData]];

如果我将 read_stream 权限提交给 Facebbok 进行审核,由于以下原因拒绝它(见下面的截图)-

还有一件事,当我使用我的帐户登录时,他们要求我允许新闻提要(read_stream)权限,但当我的朋友登录时,他们不要求该权限。

当我尝试在 Graph API explorer 上获得相同的东西时,数据就很好了。 请让我知道我在整个过程中缺少什么。 谢谢

【问题讨论】:

    标签: facebook facebook-graph-api permissions facebook-timeline review


    【解决方案1】:

    您正在尝试使用/me/home,它需要read_stream,您可以在文档中阅读:https://developers.facebook.com/docs/graph-api/reference/user/home

    ...该权限将不会获得批准:https://developers.facebook.com/docs/facebook-login/permissions/v2.3#reference-read_stream

    请改用/me/posts/me/feed,这些端点需要user_posts,并且您已经获得了该权限https://developers.facebook.com/docs/graph-api/reference/v2.3/user/feed

    顺便说一句,这在更新日志中有很好的解释:https://developers.facebook.com/docs/apps/changelog#v2_3_new_features

    【讨论】:

    • /me/posts 只返回用户自己的帖子,对吧?我认为/me/feed 是正确的选择。
    • 是的,这只会返回我的帖子。
    • 哦,我的错。会改变它。我很困惑,现在还早……或者这样:)
    • 是的,我同意,并且我使用 /me/feed 进行了测试,但这为我提供了由我发布或发布在我的墙上的提要,但我需要所有提要,例如 home。
    • 出于隐私原因,这已经不可能了。正如您在我的回答中看到的那样,您需要 read_stream ,并且您不会获得批准。
    【解决方案2】:

    您可以使用 user_posts 获取 Home Timeline 帖子。

    使用/me/feed,您可以获得其他人和您的所有帖子。转到 Developer graph API Explorer Graph API Explorer

    【讨论】:

    • 但我没有从非开发者 facebook 获得任何时间线提要。我从 facebook 获得了所有这些许可。
    • 是的,我同意,但我使用 /me/feed 进行了测试,但这为我提供了我发布的或我标记的提要,我需要所有提要。
    【解决方案3】:

    使用/me/feed 而不是/me/home,已经授予user_posts 权限,这应该可以工作。此端点还返回用户时间线中的其他帖子,而不仅仅是来自用户本人的帖子 (/me/posts)...

    【讨论】:

    • /me/home 和 /me/feed 之间有什么区别。当我在图形资源管理器上运行命令时,这两个都给了我不同的提要。
    • 是的,但是你不能在没有read_stream 的情况下使用/me/home,正如@luschn 所述。由于不再授予此权限,您需要退回到/me/feed 恕我直言。再也无法通过 App 获取完整的新闻源了。
    • 托比,我使用 /me/feed 进行了测试,但这为我提供了我发布的或我标记的提要。
    • 我知道,这就是我写的。 /me/home 不再是一个选项,我猜是因为必要权限的授予政策read_streamdevelopers.facebook.com/docs/graph-api/reference/v2.3/user/… 你将无法再获得整个​​新闻源。