【问题标题】:iOS - Get Facebook Public Page Posts without User AuthenticationiOS - 无需用户身份验证即可获取 Facebook 公共页面帖子
【发布时间】:2014-05-08 20:17:27
【问题描述】:

有很多关于相关主题的问题,但所有问题都以复杂或没有解决方案结束。所以在这里我试图让事情变得更简单,以便我能得到一个简单的答案。因此,如果您这么认为,请在将此问题标记为重复之前再三考虑。

假设,有一个公共页面,比如说“omgfactsonline”,其页面 id 是“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 仅包含基本数据(没有详细信息,例如计数、类型、cmets 计数),这还不够。

在 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 应用程序中,只有在用户身份验证后才能获得。由于这是获取帖子的一般公共页面,因此要求用户登录是没有意义的。

请建议我,如何才能达到预期的目标。

【问题讨论】:

  • 如果您不发送令牌会发生什么 - 连接是否失败?
  • 试试看这里:stackoverflow.com/a/10190683/2941357我希望,看起来很相似
  • @Tander 在这种情况下会显示“操作无法完成。(com.facebook.sdk 错误 5.)”
  • @SergeyNikitin 产生相同的基本响应,没有细节。尽管使用该问题中建议的网址编辑了我的问题。

标签: ios iphone facebook facebook-graph-api authentication


【解决方案1】:

实际上,Sahil 是正确的,但有办法解决这个问题。在 GET 参数中传入访问令牌,您可以使用 AppID 和 AppSecret 查看需要应用访问 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

【讨论】:

  • NSDictionary *params = @{@"access_token" : @"|
【解决方案2】:

根据Page Documentation,读取一个页面的墙-

需要应用或用户访问令牌才能查看完全公开页面中的字段。

需要用户访问令牌才能查看此人能够查看的受限页面中的字段(例如那些仅限于某些人口统计数据的字段,例如位置或年龄,或者只有主页管理员才能查看的内容)。
页面访问令牌也可用于查看这些受限字段。

因此,要在不登录用户的情况下从公共页面获取帖子,您可以创建一个应用并使用 应用访问令牌(app_id|app_secret)(永不过期)。

如果您仍然得到空结果,则表示帖子未公开。例如:

(但请注意,将应用访问令牌暴露给客户端是不安全的,因为这是您应用的密码。)

【讨论】:

  • 嘿...首先你为什么要特别举 Aam Aadmi 党的例子..
  • 我一下子就想到了这就是为什么。为什么这很重要?解决方案是否解决了您的问题?
  • 是的...谢谢。这不是谈论 AAP 的权利..但它从去年开始就全在脑海里了.. cu@twitter
  • 嗨,为什么这会工作一段时间?一段时间后我得到了身份验证错误。
猜你喜欢
  • 2013-08-29
  • 2015-09-15
  • 2013-06-02
  • 2017-01-12
  • 2011-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-21
相关资源
最近更新 更多