【发布时间】: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