ylluminate
ylluminate

Reputation: 12369

How to post Facebook Page updates using ruby fb_graph?

I simply would like to automate posts to Facebook for certain events to my corporate Facebook Page. It seems as though it should be straightforward from what I've read thus far, however I am running into a roadblock.

An example of some code I have and the error is as follows:

  user = FbGraph::User.me(access_token)
  user = FbGraph::User.fetch('PageName')
  FbGraph.debug! # yields true
  user.feed!(
    :message => 'Updating via FbGraph',
    :link => 'https://domain.tld',
    :name => 'PageName',
    :description => 'This is a test post to be deleted'  
  )

This returns the following error:

======= [FbGraph] API REQUEST STARTED =======
POST /234062246478665/feed HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Content-Length: 124
Host: graph.facebook.com

message=Updating+via+FbGraph&link=https%3A%2F%2Fdomain.tld&name=PageName&description=This+is+a+test+post+to+be+deleted
--------------------------------------------------
Status: 403 Forbidden
Access-Control-Allow-Origin: *
Cache-Control: no-store
Content-Type: text/javascript; charset=UTF-8
Expires: Sat, 01 Jan 2000 00:00:00 GMT
Pragma: no-cache
WWW-Authenticate: OAuth "Facebook Platform" "insufficient_scope" "(#200) This API call requires a valid app_id."
X-FB-Rev: 541309
X-FB-Debug: JN9/Vt8MN24GNUL34l8TE2cDuCRZZehdUTx2KkOrHQ8=
X-Cnection: close
Date: Mon, 16 Apr 2012 18:55:20 GMT
Content-Length: 0

{"error":{"message":"(#200) This API call requires a valid app_id.","type":"OAuthException","code":200}}
======= [FbGraph] API REQUEST FINISHED =======
/Users/username/.rvm/gems/ruby-1.9.3-p125@all/gems/fb_graph-2.4.10/lib/fb_graph/exception.rb:55:in `handle_httpclient_error': OAuthException :: (#200) This API call requires a valid app_id. (FbGraph::Unauthorized)
    from /Users/username/.rvm/gems/ruby-1.9.3-p125@all/gems/fb_graph-2.4.10/lib/fb_graph/node.rb:145:in `handle_response'
    from /Users/username/.rvm/gems/ruby-1.9.3-p125@all/gems/fb_graph-2.4.10/lib/fb_graph/node.rb:54:in `post'
    from /Users/username/.rvm/gems/ruby-1.9.3-p125@all/gems/fb_graph-2.4.10/lib/fb_graph/connections/feed.rb:15:in `feed!'
    from ./test_script.rb:168:in `block in <main>'
    from /Users/username/.rvm/gems/ruby-1.9.3-p125@all/gems/nokogiri-1.5.2/lib/nokogiri/xml/node_set.rb:239:in `block in each'
    from /Users/username/.rvm/gems/ruby-1.9.3-p125@all/gems/nokogiri-1.5.2/lib/nokogiri/xml/node_set.rb:238:in `upto'
    from /Users/username/.rvm/gems/ruby-1.9.3-p125@all/gems/nokogiri-1.5.2/lib/nokogiri/xml/node_set.rb:238:in `each'
    from ./test_script.rb:85:in `each_with_index'
    from ./test_script.rb:85:in `<main>'

On developers.Facebook.com/apps -> Settings -> Auth Dialog I am setting the Extended Permissions to include publish_stream and status_update.

I have found that curl access with the same token does indeed work as follows:

curl -F 'access_token=MY_BIG_OLE_LONG_TOKEN' -F 'message=testing message' https://graph.facebook.com/MyPage/feed

Am I missing the setting of a permission somewhere or not calling the api correctly with the fb_graph ruby gem?

Upvotes: 3

Views: 2908

Answers (1)

benchwarmer
benchwarmer

Reputation: 2774

You need to check out documentation for page of graph API. Check the field access_token which manages_pages. You need to set this option in the extended_permission. The key here is getting the right token. The token in the text field may not work most of the time. You need to send GET request to https://graph.facebook.com/YOUR_PROFILE_ID/accounts to obtain the correct token. Seems like you already got the correct one.

I have used koala gem before. As posted here.

page_graph = Koala::Facebook::GraphAPI.new(@access_token)
page_graph.put_object('MyPage', 'feed', :message => 'This is posted as the page')

Well I must say facebook's API documentation lacks the developer friendliness. You need to dig deep for getting even the simplest things to work.

I hope this will help you to get started with automating the FB posts.

Upvotes: 3

Related Questions