2
我已經關注了Facebook網站上的教程/文檔,並且使用coldfusion發佈到用戶的牆/時間線上一步。我有最後一步,用cfhttp自動發佈。我無法讓它工作。如何使用cfhttp自動發佈到Facebook的圖形API?
<!--- This is the page that you call and also use as the redirect_uri... facebook returns code and state in the URL --->
<cfparam name="URL.code" default="" type="string">
<cfparam name="URL.state" default="" type="string">
<cfif #URL.code# EQ "">
<cfparam name="URL.error_reason" default="" type="string">
<cfparam name="URL.error" default="" type="string">
<cfparam name="URL.error_description" default="" type="string">
<cfmail charset="utf-8" type="html" server="mail.mysite.com" from="[email protected]" to="[email protected]" subject="Facebook Authentication Denial">
#SESSION.my_profile_id#: #SESSION.my_profile_username#
#URL.error_reason#<br/>
#URL.error#<br/>
#URL.error_description#<br/>
</cfmail>
<cfabort>
<cfelse>
<cfhttp
method="get"
url="https://graph.facebook.com/oauth/access_token?client_id=myappid&redirect_uri=http://www.mysite.com/dbf/_my-controller/fb_user_code.cfm&client_secret=216792f1a1ddbb568c57624a988028dc&code=#Trim(URL.code)#"
result="my_fb_user_token"/>
<cfif #my_fb_user_token.filecontent# CONTAINS "access_token=">
<cfset new_token = ReplaceNoCase(#my_fb_user_token.filecontent#,"&expires","|","all")>
<cfset new_token = REReplaceNoCase(#new_token#,"\|.*$","")>
<cfquery name="fb_confusion" datasource="#dsn#" maxrows="1">
SELECT facebook_id
FROM my_profile
WHERE my_profile_id = '#SESSION.my_profile_id#'
</cfquery>
<cfoutput>#new_token#</cfoutput>
<hr/>
<cfhttp
method="get"
url="https://graph.facebook.com/me?#new_token#"
result="my_fb_user"/>
<cfoutput>https://graph.facebook.com/#fb_confusion.facebook_id#/feed?#new_token#</cfoutput>
<hr/>
<cfoutput>
<cfhttp url="https://graph.facebook.com/me/mysite:add?group=http://www.mysite.com/dbf/test_group.cfm&#new_token#"
result="fb_publish"
method="post"
multipart="yes">
<cfhttpparam name="appID" value="myappid" encoded="no" type="url">
<cfhttpparam name="access_token" value="#my_fb_user_token.filecontent#" encoded="no" type="url">
<cfhttpparam name="message" value="Test" encoded="no" type="url">
<cfhttpparam name="link" value="http://www.mysite.com" encoded="no" type="url">
<cfhttpparam name="name" value="Test" encoded="no" type="url">
<cfhttpparam name="caption" value="Testing fb api" encoded="no" type="url">
<cfhttpparam name="description" value="Testing to see if this posts" encoded="no" type="url">
</cfhttp>
</cfoutput>
<cfdump var="#fb_publish.filecontent#">
</cfif>
</cfif>
該消息從fb_publish轉儲返回是:
{ 「錯誤」:{ 「消息」: 「無效OAuth訪問令牌。」, 「類型」: 「OAuthException」, 「代碼」: 190}}
您的訪問令牌有效嗎?你是否通過正確的oAuth流程獲得了令牌? – Jason 2012-04-10 11:37:47
是的。該令牌是有效的。我在上面的代碼中輸出它,當它返回時複製它,並將其粘貼到Facebook的圖形調試器,它工作得很好。該問題開始於cfhttp method =「post」 – 2012-04-10 12:44:44
直到8小時後我才能回答......等等。首先,cfhttp文章中的URL需要更改爲教程中的facebook作爲其發佈URL的地址:https://graph.facebook.com/me/[YOUR_APP_NAMESPACE]:cook?recipe=OBJECT_URL&access_token=ACCESS_TOKEN 接下來,我需要將參數從type =「url」更改爲type =「formfield」。 就是這樣。現在起作用了。 – 2012-04-10 17:45:11