2012-04-04 119 views
3

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

令牌每隔几个月就会过期,或者我想。它持续了很长一段时间,而且我已经阅读,没有办法自动授权应用程序。然而,我不断阅读这些刷新标记或其他内容,但无法清楚地了解它们的工作方式。

我想我的脚本试图从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 /> 

回答

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")#'>

///运行代码使用下面#this.access_token#当你需要它。 ///

+0

因此,在客户端秘密的情况下,每次都可以获取令牌?我只是使用: 'https://graph.facebook.com/oauth/authorize?type = user_agent&client_id = YOUR_CLIENT_ID&redirect_uri = REDIRECT_URL&scope = offline_access' Facebook文档在我看来是糟糕的,我没有看到格式你列在上面。我将不得不尝试一下。 – Leeish 2012-04-05 16:42:56

+0

它迫使我加入redirect_uri,因为oAuth不停地给我一个错误,说它需要它,但是之后它确实很好。我将添加答案,原来的帖子,所以它在那里。 – Leeish 2012-04-11 17:29:52