【问题标题】:Fetch Own Feed From Facebook API从 Facebook API 获取自己的订阅源
【发布时间】:2018-10-25 15:57:38
【问题描述】:

我知道这个问题被问了很多,但随着 Facebook 的最新变化,我很难弄清楚如何完成这项任务。由于这些变化,许多教程和答案不再相关。

我想要做的是获取我自己的个人 Facebook 提要帖子(我的帖子)并将它们显示在我网站的“新闻”部分。我想使用 Graph API,因为 Facebook Page social plugins 有奇怪的宽度限制,对我不起作用。

要访问我的 OWN 供稿上的 OWN 帖子以放置在我的 OWN 网站上,我似乎很难获得有效的访问令牌。我是否需要进行“Facebook 登录”才能进行权限处理?

我创建了一个 Facebook 开发者帐户,创建了一个应用程序,并且似乎使用以下代码成功获取了令牌:

let myToken = ''

fetch(`https://graph.facebook.com/oauth/access_token?client_id=${id}&client_secret=${secret}&grant_type=client_credentials`)
  .then(response => response.json())
  .then(token => (myToken = token.access_token))
  .catch(e => console.log(e))

当我去使用那个令牌时:

fetch(`https://graph.facebook.com/v3.0/me/feed?limit=10&fields=id%2Cfull_picture%2Ccreated_time%2Cfrom%7Bid%2Cname%2Cpicture%7D%2Cmessage%2Clink%2Ctype%2Cshares%2Cobject_id%2Cstory&access_token=${myToken}`)
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(e => console.log(e))

我收到一个错误:必须使用活动访问令牌来查询有关当前用户的信息。

我不想要任何用户交互(评论、“喜欢”等),我只想阅读消息并加载图像(如果存在)。我会将访客介绍给 互动的“在 Facebook 上查看”链接。

使用 Graph API Explorer Tool,我能够成功获取数据,但我需要选择“获取用户访问令牌”并选择一堆权限。

我可以从 Graph API Explorer 获取令牌并让我想要的代码工作,但它只能持续 1 小时(短期)到 2 个月(长期)。并且宁愿不不断地将硬编码令牌更新到我的页面中。

我错过了什么吗?

提前致谢。

【问题讨论】:

  • “我不想要任何用户交互” - 如果您可以在没有用户交互的情况下获得访问令牌,那将非常奇怪(并且非常危险)。
  • @luschn 我应该澄清一下——“用户交互”是指我不想“喜欢”或发表评论。我只是希望出现一个帖子列表,其中包含一个返回 Facebook 帖子的链接,以便访问者可以在那里点赞/评论。
  • @贾斯汀。你能解决这个问题吗?我正在尝试做同样的事情。
  • @C_blunt,将 Facebook 提要添加到我的客户网站是一个“如果它易于实现会很酷,但不是必需的”功能。最后,我们认为每 60 天手动更新令牌的麻烦并不能证明使用 API 是合理的。相反,我们使用简单的 CMS 在他们的网站上构建了一个自定义新闻部分。可以理解的是,Facebook 现在正在严格控制他们的 API。希望将来事情会更轻松一些,我会重新审视这个功能。

标签: javascript facebook api facebook-graph-api


【解决方案1】:

确保您为此请求使用了正确的访问令牌。

对于此请求,您应该使用 User Token 而不是 App Token(中间有 | 的那个)。

我用我自己的令牌尝试了你的代码,当使用 User Token 时,它给了我一个数据对象(在我的情况下是空的)。

当使用 App Token 时,Graph API 会响应 “必须使用活动访问令牌来查询当前用户的信息。” 消息,与你得到了。

在此页面上阅读有关访问令牌的更多信息:https://developers.facebook.com/docs/facebook-login/access-tokens

让我知道你过得怎么样。

【讨论】:

  • 感谢您指出我使用了错误的令牌。因此,我最好的方法是使用 Graph API Explorer 生成具有必要权限的长期用户令牌,并每 60 天(在过期之前)更新我的应用程序中的代码?如果是商业脸书页面,有什么区别吗?
  • 我认为这将是关于用户个人资料,而不是页面?这是两件不同的事情。无论如何,对于用户配置文件,唯一的方法是使用长期存在的用户令牌并每 2 个月刷新一次 - 无法自动执行此操作。
  • @Justin 是的,恐怕您需要每 60 天更新一次用户令牌。不知道用户个人资料或企业页面之间有什么区别。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-09-27
  • 2011-11-21
  • 1970-01-01
相关资源
最近更新 更多