#1
  1. No Profile Picture
    Contributing User
    Devshed Newbie (0 - 499 posts)

    Join Date
    Oct 2007
    Posts
    114
    Rep Power
    0

    Post to facebook graph with cfhttp


    I have followed the tutorials/documentation on facebook's site and am one step away from publishing to a user's wall/timeline using coldfusion. I have one last step, post automatically with cfhttp. I can't get it to work.

    Code:
    <!--- 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="messages@mysite.com" to="messages@mysite.com" 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>
    The message returned from the fb_publish dump is:

    {"error":{"message":"Invalid OAuth access token.","type":"OAuthException","code":190}}

    I know the access token is accurate because I take the outputted code and paste it into the facebook debugger and it works just fine. The issue is with cfhttp post.
  2. #2
  3. No Profile Picture
    Moderator

    Join Date
    Jun 2002
    Location
    Raleigh, NC
    Posts
    5,243
    Rep Power
    967
    I would try to confirm that the request is correct by constructing a duplicate request in something like Poster.
  4. #3
  5. No Profile Picture
    Contributing User
    Devshed Newbie (0 - 499 posts)

    Join Date
    Oct 2007
    Posts
    114
    Rep Power
    0
    I went back into the graph documentation and noticed that the POST URL they display for JS SDK is different than what I had. So I changed the URL in the cfhttp post to match the POST format they display for JS. Then I pulled out all the form params except for the appId. Now it works.

IMN logo majestic logo threadwatch logo seochat tools logo