【问题标题】:Displaying Facebook posts to non-Facebook users向非 Facebook 用户显示 Facebook 帖子
【发布时间】:2012-03-26 22:28:29
【问题描述】:

有没有一种方法可以将 Facebook 内容(特别是来自公共页面的墙贴)拉到网站上,而无需 Facebook 要求用户登录?在不推荐使用offline_access 权限之前,我会简单地创建一个令牌作为我自己,存储它,并根据需要提取信息。

现在,据我所知,我仅有的两个选择是 1)每 60 天手动更新一次该令牌,或 2)仅向 Facebook 用户显示内容并让他们“允许”该应用程序。显然#1 不是首选选项,#2 似乎不是很好的做法。

作为参考,我只是试图从可公开访问的页面墙上提取内容,并且不需要代表用户执行任何操作(没有墙发布、没有阅读流等)。

这似乎是一个非常简单的概念,我觉得我必须遗漏一些东西。我在任何地方都找不到答案。这些真的是我唯一的两个选择吗?任何反馈将不胜感激。

更新:

我想我可能已经找到了解决这个问题的方法。由于不推荐使用 offline_access,有一个 fb_exchange_token 选项可用于延长现有令牌的到期时间。调用以下内容:

https://graph.facebook.com/oauth/access_token?client_id={app_id}&client_secret=
{app_secret}&grant_type=fb_exchange_token&fb_exchange_token={existing_token}

您应该会收到一个过期的令牌。在我的场景中,我将允许应用程序通过我自己的 Facebook 帐户,将令牌存储在我的 PHP 代码中,并只使用 cURL 定期更新现有代码。

注意:根据 Facebook 文档,有效期每天只能延长一次

【问题讨论】:

  • 在offline_access权限被弃用之前,我会简单地创建一个令牌作为我自己,存储它,并根据需要提取信息。然后,如果您更改密码或会话出于安全原因进行更改,您需要再次获取另一个访问令牌&我不确定在弃用离线访问后是否可行(我认为它再次可用)
  • @korysharp 这对你有用吗?我正在尝试做同样的事情。你有一个例子说明你是如何做到的吗?
  • @MicFin 我目前正在使用graph.facebook.com{page_url}/feed?access_token={app_token} 其中page_url 是页面的url(即:cocacola),app_token 表示应用程序访问令牌。查看stackoverflow.com/questions/12948809/… 以获取有关获取其中之一的说明。我已经能够为我们所有的网站存储和使用这个单一的令牌(没有过期)。希望这会有所帮助。
  • @KorySharp 效果很好,但我确实遇到了问题。对于某些用户,它工作正常,但是当我在其他用户上使用它时,我收到错误 Koala::Facebook::ClientError: type: OAuthException, code: 803, message: (#803) Cannot query users by their username (benaffleck) [ HTTP 404] 来自 /Users/Raevynheart/.rvm/gems/ruby-2.1.2/gems/koala-1.10.0/lib/koala/api/graph_api.rb:503:in `block in graph_call' 有什么建议吗?
  • @McFin 此方法仅适用于具有公共访问权限(无隐私设置)的页面。在我的案例中,我使用它的页面是我们拥有公共页面的客户。 Ben Affleck 帐户是“页面”还是普通用户帐户?

标签: php facebook facebook-graph-api


【解决方案1】:

假设您拥有该页面,您可以使用 manage_pages 权限。 manage_pages 权限是我可以收集的永久令牌。然后在带有相关页码的图形 api 上使用 /feed 来拉取信息。

我假设您拥有此页面。如果您没有或未获得明确许可,则您无权删除此信息。

【讨论】:

  • 除非我做错了什么,否则情况并非如此。我刚刚获得了一个具有 read_stream 和 manage_pages 权限的令牌。令牌在 4238 秒(一个多小时)后过期。我知道您拥有的每个页面都有单独的令牌,您可以通过 open graph api @/me/accounts 访问这些令牌,但这些页面令牌与用于获取这些密钥的令牌同时到期。
  • 如果你获得了 publish_stream 权限呢?我在我的应用程序中使用了它,我知道它不会过期。或者我至少已经用了几个月而且它还在继续。
  • 曾经有一个offline_access 权限已经不存在了。我有一些网站使用我通过 offline_access 获得的令牌(并且仍然有效),但这不再是一种选择。
  • 没有骰子。我只是为 publish_stream 做了一个令牌请求......仍然有 5000 秒以下的过期时间。
  • 不幸的是,它没有。我尝试使用 appID|appSecret 作为访问令牌,虽然这不会产生无效令牌错误,但无论我进行何种调用,它都不会产生任何结果(返回空数据集)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-26
  • 2018-07-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-20
  • 1970-01-01
相关资源
最近更新 更多