在不连接到 Facebook 的情况下获取访问令牌

Get an access token without being connected to facebook

我需要使用他们的 javascript SDK 检索 Facebook 页面的帖子列表(提要),就像他们在文档中解释的那样:https://developers.facebook.com/docs/graph-api/reference/v2.4/page/feed

/* make the API call */
FB.api(
    "/{page-id}/posts",
    function (response) {
      if (response && !response.error) {
        /* handle the result */
      }
    }
);

我需要它成为我网站的 "news section",这样用户即使没有连接到 facebook 也应该能看到它。

问题

很酷,但是有一个问题... returns: An access token is required to request this resource. 天哪...我想为你获取一些访问令牌@facebook,但我的应用程序没有使用你的身份验证tools/plugins。 无论如何,我尝试使用 FB.getLoginStatus(); 但没有用,因为它可以 return 和 access_token 的唯一方法是用户是否实际连接到应用程序。 我的用户甚至可能没有登录到 facebook!

那么,我怎样才能将 access_token 存储到变量中,然后用于获取 /{my-page}/posts

我已经看过这个SO question,但它并没有解决我的问题,只是因为没有这样的"generic tokens"。 我也读过 https://developers.facebook.com/docs/facebook-login/access-tokens/ 并且它也依赖于通过 facebook 登录方法生成的令牌......所以,我不能在我的网站上显示 fb 页面的帖子列表,而不连接到 facebook,因此是一个应用程序?

添加:我的应用程序是使用 angularJS 构建的,我不处理服务器端代码。我将完全依赖 javascript 方法。

您可以使用页面或应用程序访问令牌,但由于您将在客户端使用它们,因此两者都不是一个选项。

Note that because this request uses your app secret, it must never be made in client-side code or in an app binary that could be decompiled. It is important that your app secret is never shared with anyone. Therefore, this API call should only be made using server-side code.

我强烈建议构建一个简单的服务器端脚本(例如 PHP)来将请求代理到图形 API。然后,您可以通过 AJAX 调用它并异步加载帖子(并摆脱 FB JS SDK!)。如果您不想为所有用户使用 FB 登录(恕我直言,这也没有多大意义),则有 NO 方法以安全的方式处理此问题。

我觉得很简单:)
由于页面的帖子总是 public,它只需要一个 valid 访问令牌来检索页面帖子。 引用你写的内容:

So, ¿How can I get an access_token to be stored into a variable, and later be used to get /{my-page}/posts?

您只需要一个访问令牌。
我的建议是;
- 为自己生成访问令牌(无需额外许可) - 请求 page-id/posts

这样您就不需要其他用户连接到 Facebook,您可以简单地请求 page-id/posts 使用您为自己生成的访问令牌检索帖子。

我希望它能解决你的问题:D
提示:只要帖子是public,你只需要一个有效的访问令牌,它不需要需要特定于用户或页面。