1

为了解决Stack Exchange Web Applications 上的一个问题中详述的问题,我编写了一个小的 PHP 脚本,它给出了一个页面名称和一个适当的 access_token 将该页面创建的事件作为 iCal 日历文件吐出。显然,这个文件不应该被人类访问,而是通过例如谷歌日历来订阅。

我通过 Facebook Graph Explorer 创建了 access_token,后来才意识到它过期了。那么问题来了:我可以得到一个不会过期的页面 access_token 吗?如果做不到这一点,我能得到一个有效期很长的吗?

如果这是不可能的 - 有没有人知道该怎么做?每小时手动提供一次 access_token 感觉不太可行。

4

2 回答 2

2

@CBroe 让我走上了正确的道路,@MPaulo 进一步帮助了我。下面是我如何在我创建的脚本文件的开头解释该过程,以解决我在上面的问题开头链接到的问题中描述的问题。


首先,您需要一个访问令牌。这是一件复杂的事情 - 获得一个普通的很容易,但我们想要一个永久持续的。如场景 5 所述:https://developers.facebook.com/roadmap/offline-access-removal/,我们需要:

  1. 获取常规的短期访问令牌
  2. 将其交换为长期访问令牌
  3. 使用我们的新访问令牌,获取永久页面访问令牌。

首先,在https://developers.facebook.com/apps/创建一个新的 Facebook 应用程序。它可以随便命名,它不会被真正使用。填写一个域 - 哪个没关系,只需要一个显示简单 HTML 并且不执行任何重定向的域:我使用自己的静态网页http://jobjorn.se/,但http://example .org/也可以工作。

按照 MPaulo 在 Stack Overflow 上的指示:https ://stackoverflow.com/a/11238327/564628 ,使用应用程序 ID - 来自您新创建的应用程序 - 并访问此页面: https ://www.facebook.com/dialog /oauth?client_id=MY_APP_ID&redirect_uri=MY_SITE_URL&scope=manage_pages&response_type=token 务必替换“MY_APP_ID”和“MY_SITE_URL”。

然后,通过访问此页面将您的短期访问令牌交换为长期访问令牌: https : //graph.facebook.com/oauth/access_token?client_id=MY_APP_ID&client_secret=MY_APP_SECRET&grant_type=fb_exchange_token&fb_exchange_token=YOUR_ACCESS_TOKEN 确保替换“MY_APP_ID "、“MY_APP_SECRET”和“YOUR_ACCESS_TOKEN”(最后一个是您从第一页收到的访问令牌)

最后,在此处获取您的页面访问令牌: https ://graph.facebook.com/me/accounts?access_token= YOUR_NEW_ACCESS_TOKEN 请务必替换“YOUR_NEW_ACCESS_TOKEN”(您从第二页收到的访问令牌)

粘贴在下面。它应该是永久性的,但由于一个错误,它可能只持续两个月 - 有关详细信息,请参阅https://developers.facebook.com/bugs/151056591697025。不过好像已经修好了。你可以在这里测试它:https ://developers.facebook.com/tools/debug/access_token

于 2012-07-21T19:42:01.710 回答
0

创建一个应用程序并使用应用程序的凭据进行身份验证。只要您不读取用户特定数据,就不需要用户 access_token。

于 2012-07-21T02:26:35.100 回答