用于简单信息检索的Facebook Graph API身份验证

时间:2012-07-21 01:41:41

标签: php facebook facebook-graph-api google-calendar-api

为了解决a question on Stack Exchange Web Applications中详述的问题,我编写了一个PHP脚本,该脚本给出了一个页面名称,并且正确的access_token将该页面创建的事件作为iCal日历文件吐出。显然,这个文件不应该被人类访问,而是通过Google Calendar来订阅。

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

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

2 个答案:

答案 0 :(得分:2)

@CBroe让我走上了正确的轨道,而@MPaulo帮助了我。以下是我在我创建的脚本文件开头解释过程的方法,以解决我在上面问题开头链接到的问题中描述的问题。


首先,您需要一个访问令牌。这是很复杂的东西 - 定期一个很容易,但我们想要一个持久的。如方案5中所述:https://developers.facebook.com/roadmap/offline-access-removal/,我们需要:

  1. 获取常规的短期访问令牌
  2. 将其换成长期存取令牌
  3. 使用我们的新访问令牌,获取永久页面访问令牌。
  4. 首先,在https://developers.facebook.com/apps/创建一个新的Facebook应用。它可以命名为什么,它不会被真正使用。填写一个域 - 无论是哪个,只需要一个显示简单HTML并且不进行任何重定向的域:我使用自己的静态网页http://jobjorn.se/,但http://example.org/也可以使用

    按照此处的Stack Overflow上的MPaulo指示: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

答案 1 :(得分:0)

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