服务器端OAuth Facebook令牌刷新

时间:2012-04-04 19:32:23

标签: facebook coldfusion oauth

我有一个ColdFusion网页,每隔x分钟就会被我的服务器刷新一次。该脚本检查各种提要(Facebook,YouTube和内部新闻项目)并按时间顺序构建合并的提要。 Facebook部分只是从我们的Facebook粉丝页面中提取帖子数据。我可以使用从我们的帐户授权我的应用时提供的OAuth令牌来执行此操作。

令牌每隔几个月就会到期,或者我认为。它持续了很长时间,我读过没有办法自动授权应用程序。然而,我继续阅读这些刷新令牌或其他内容,但无法清楚地了解它们的工作原理。

我希望我的脚本尝试从Facebook获取JSON数据,如果令牌经常过期,请重新请求它,但似乎只是再次访问graphs.facebook.com/oauth/authorize链接不起作用,因为很明显你需要登录才能授权。

无论如何,我可以在内部重新授权或刷新令牌服务器端。这个Facebook应用程序,网站和Facebook用户都是完全内部的。曾经有一个Facebook页面的RSS提要,但Facebook一直在改变东西,我不再看到它了。

我真正需要的是来自Facebook公司页面的时间轴/ Feed的数据。

任何解决方案或建议都会有所帮助。

答案:这就是我最终用来根据内容获取数据的方法。下面抓取令牌,然后使用令牌抓取订阅源数据并将其放入结构中。它可能不是最简洁的方式,但它确实有效。

<cfhttp url="https://graph.facebook.com/oauth/access_token?client_id=[CLIENTID]&client_secret=[CLIENTSECRET]&grant_type=client_credentials&redirect_uri=[URL] "   
        result="AccessHTTP" />
<cfset token = replace(AccessHTTP.Filecontent,"access_token=", "", "ALL")>

<cfhttp result="result" url="https://graph.facebook.com/[USERNAME]/posts?access_token=#token#" ></cfhttp>
<cfset Facebook = deserializeJSON(result.filecontent).data />

1 个答案:

答案 0 :(得分:0)

我每次加载页面时都会抓取令牌。

<cfhttp url="https://graph.facebook.com/oauth/access_token?client_id=your_client_id&client_secret=your_secret&grant_type=client_credentials" result="ThisHTTP" /> <cfset this.access_token = '#replace(ThisHTTP.Filecontent,"access_token=", "", "ALL")#'>

///在您需要时使用#his.access_token#运行您的代码。 ///