我想在我的应用中收到已定义的Facebook页面的公开信息。我已经集成了FacebookSDK并在Facebook开发者控制台中创建了一个新应用程序。我的请求看起来像这样:
new Request(
null,
"/176063032413299/feed",
null,
HttpMethod.GET,
new Request.Callback() {
public void onCompleted(Response response) {
tv.setText(response.getRawResponse());
}
}
).executeAsync();
服务器回答,我需要一个acceess令牌。但是当我们使用我的应用时,我不希望我的用户登录。那么是否可以选择在不登录的情况下获取访问令牌?我只想阅读公共数据。我对发布或阅读私人帖子不感兴趣。
如果我像这样使用app访问令牌,它仍然不起作用:
new Request(
null,
"/176063032413299/feed?access_token=xxx",
null,
HttpMethod.GET,
new Request.Callback() {
public void onCompleted(Response response) {
tv.setText(response.getRawResponse());
}
}
).executeAsync();
我收到回复: "无效的OAuth访问令牌签名"
答案 0 :(得分:2)
即使是公开帖子,您也必须授权用户才能获得访问权限。使用read_stream
获取所有帖子或使用user_status
获取用户的帖子。
read_stream很可能不会被Facebook批准,请参阅此文档:https://developers.facebook.com/docs/facebook-login/permissions/v2.2
请注意,“公开”并不意味着您可以在未经用户授权的情况下抓取它。应用程序无法抓住他们想要的东西 - 无论如何都不允许抓取:https://www.facebook.com/apps/site_scraping_tos_terms.php
此外,当然,如果没有用户交互(登录和授权),您无法创建用户令牌(这是您需要的)。有关访问令牌的详细信息,请访问以下链接:
顺便说一下,文档提到“查看公共链接需要任何有效的访问令牌”。 - 所以你可能只能获得链接。
来源:https://developers.facebook.com/docs/graph-api/reference/v2.2/user/feed
要调试访问令牌,请使用Facebook调试器:https://developers.facebook.com/tools/debug/
编辑:我刚刚意识到您只想获取Facebook页面的公共提要,而不是用户个人资料。为此,您可以使用App Access Token。它永远不会过期且易于创建:App-ID|App-Secret
。查看文档以获取更多信息。请注意,如果页面受年龄或国家/地区限制,则需要使用用户令牌或页面令牌。
答案 1 :(得分:0)
查看https://developers.facebook.com/docs/graph-api/reference/v2.2/page/feed/
能够请求/{page_id}/feed
的权限:
- 查看公开分享的帖子需要访问令牌。
- 需要用户访问令牌才能检索该人可见的帖子。
- 需要使用网页访问令牌来检索任何其他帖子。
这意味着您可以生成一个长期存在的页面访问令牌,以便能够检索公共页面帖子。由于您不想在应用中存储过期的访问令牌,因此您必须创建一个后端Web服务来代理Graph API与您的应用之间的请求。
见
您还应该能够使用无限期有效的App Access令牌。
答案 2 :(得分:-1)
您也可以生成并签署自己的个人令牌,但不想分发。