【问题标题】:Call facebook api with app access token and retrieve feed from user's page使用应用访问令牌调用 facebook api 并从用户页面检索提要
【发布时间】:2017-02-17 16:31:44
【问题描述】:

这听起来像是一个愚蠢的问题,但我不明白令牌是如何工作的。

上下文:我有一个 web 应用程序,用户可以在其中按下按钮并使用他们的 facebook 凭据登录,给我“manage_pages”权限。 webapp 的想法是在服务器上每 5 分钟运行一个 cron,它将检索用户的帖子并将其显示在 webapp 中。

步骤:

  1. 用户单击按钮,登录到 facebook(这样我就可以获得访问令牌,我们称之为 user-access-token)。
  2. Webapp 发出请求“/me/accounts”(使用 user-access-token),因此我可以获取用户页面之一的页面 ID。
  3. Webapp 向我的内部 API 发出请求,并将用户的 PageID 存储在数据库中。

现在,我有提到的 cron,它每 5 分钟发出一次请求“{page_id}/feed”以获取此页面的帖子,然后在我的 web 应用程序中显示它们。为此,我正在使用 Facebook SDK for PHP,我这样做了:

  • 使用我的应用 ID 和密码登录。
  • 我得到一个访问令牌(我们称之为 my-app-access-token
  • 我发出请求“{page_id}/feed”,发送 my-app-access-token失败

    • 那么,为什么它失败?我知道这与访问令牌有关,因为如果我使用 user-access-token 我可以在服务器中执行请求,但如果我使用 my-app-访问令牌,我不能。
    • 如果用户授予我 manage_pages 权限,为什么我不能使用 my-app-access-token
    • 我想到的替代方案是,在步骤 3 上,我也可以存储 user-access-token。但是如果我这样做,我认为令牌会在一段时间后过期,对吧?

【问题讨论】:

    标签: facebook-graph-api access-token


    【解决方案1】:

    我执行请求“{page_id}/feed”,发送 my-app-access-token 但失败

    如果页面不是公开的或以任何方式限制访问,那么您不能使用应用访问令牌,但需要为可以看到该页面的用户使用用户访问令牌,或页面访问令牌。

    [...]但是如果我这样做,我认为令牌会在一段时间后过期,对吧?

    扩展页面访问令牌没有默认到期时间。 (但是,它们可能会因其他原因过期,例如,如果使用其令牌请求页面令牌的页面管理员用户更改了他们的帐户密码。)

    https://developers.facebook.com/docs/facebook-login/access-tokens

    【讨论】:

    • 谢谢。我读了一点。据我了解,long-lived 页面令牌不会过期。所以,我应该选择替代方案:当我将页面 id 发送到我的数据库时,我可以存储令牌(事实上,因为它将是一个短暂的令牌,我可以使用我的应用程序 id + 我的秘密+ 用户页面的页面令牌,并生成一个 long-lived 令牌并存储没有过期时间的令牌。我说的对吗?
    • 你需要先扩展短暂的用户token,然后用扩展的用户token请求页面token。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-12
    • 1970-01-01
    • 1970-01-01
    • 2013-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多