关于相关主题存在很多问题,但所有问题都以复杂或无解决方案结束。所以在这里我试图让事情更简单,以便我能得到一个简单的答案。因此,如果您正在考虑这个问题,请在重复之前重新考虑。
假设有一个公共页面,比如“omgfactsonline”,其页面编号为“237061956027”
通过点击以下网址,我们可以获得非常基本的帖子
https://www.facebook.com/feeds/page.php?id=237061956027&format=json
或
https://www.facebook.com/feeds/page.php?format=rss20&id=237061956027
正如我所说,结果json / xml只包含基本数据(没有细节,例如计数,类型,注释计数),这是不够的。
在Facebook Graph API Explorer上,如果我使用一些示例令牌点击路径 @“/ 237061956027 / posts” ,我会得到所需的结果。
因此,对于iOS应用程序,根据Facebook开发者网站,获得正确帖子的方式是
/* make the API call */
[FBRequestConnection startWithGraphPath:@"/237061956027/posts"
parameters:nil
HTTPMethod:@"GET"
completionHandler:^(
FBRequestConnection *connection,
id result,
NSError *error
) {
/* handle the result */
}];
但是这个代码的问题是,它需要一个访问令牌,在iOS应用程序中,只能在用户身份验证之后才能获得。由于这是一个公共页面来获取帖子,因此要求用户登录是没有意义的。
请建议我,如何实现预期目标。
答案 0 :(得分:3)
实际上,Sahil是正确的,但有办法解决这个问题。传入GET参数中的访问令牌,您可以使用AppID和AppSecret查看需要App Access ID的页面。以下应该有效:
//create your params
NSDictionary *params = @{@"access_token" : @"<app_id>|<app_secret"};
/* make the API call */
[FBRequestConnection startWithGraphPath:@"/237061956027/posts"
parameters:nil
HTTPMethod:@"GET"
completionHandler:^(
FBRequestConnection *connection,
id result,
NSError *error
) {
/* handle the result */
}];
来自Facebook API https://developers.facebook.com/docs/facebook-login/access-tokens#apptokens
答案 1 :(得分:1)
根据Page Documentation,阅读页面的墙 -
查看完整公开页面中的字段需要应用或用户访问令牌。
需要用户访问令牌才能查看此人能够查看的受限页面中的字段(例如限制某些人口统计信息,如位置或年龄,或者只有Page admins可以查看的那些)。
页面访问令牌也可用于查看受限制的字段。
因此,要在不登录用户的情况下从公共页面获取帖子,您可以创建应用并使用应用访问令牌(app_id | app_secret)(永不过期)。
如果您仍然获得空结果,则表示帖子不公开。例如:
由于这些帖子不公开,可口可乐的网页不会给您带来任何结果。
https://graph.facebook.com/cocacola/posts?access_token= {应用存取令牌}
Aam Aadmi的派对将会公开发布你的帖子。
https://graph.facebook.com/AamAadmiParty/posts?access_token= {应用存取令牌}
(但请注意,将应用访问令牌暴露给客户端是不安全的,因为这是您应用的密码。)