2012-04-16 34 views
3

我只是想将帖子自动发送到Facebook的某些事件到我的公司Facebook页面。从我目前阅读的内容看来,它应该是直截了当的,但是我正遇到障碍。如何使用ruby fb_graph发布Facebook页面更新?

的一些代码,我已经和误差如下一个例子:

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

这将返回以下错误:

======= [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/[email protected]/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/[email protected]/gems/fb_graph-2.4.10/lib/fb_graph/node.rb:145:in `handle_response' 
    from /Users/username/.rvm/gems/[email protected]/gems/fb_graph-2.4.10/lib/fb_graph/node.rb:54:in `post' 
    from /Users/username/.rvm/gems/[email protected]/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/[email protected]/gems/nokogiri-1.5.2/lib/nokogiri/xml/node_set.rb:239:in `block in each' 
    from /Users/username/.rvm/gems/[email protected]/gems/nokogiri-1.5.2/lib/nokogiri/xml/node_set.rb:238:in `upto' 
    from /Users/username/.rvm/gems/[email protected]/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>' 

developers.Facebook.com/apps - >设置 - >验证对话框我将Extended Permissions设置为包括publish_streamstatus_update

我发现curl与同样获得确实的工作方式如下:

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

我缺少权限的设定某处或不与fb_graph红宝石宝石正确调用API?

回答

3

您需要查看图API的page的文档。检查字段access_token其中manages_pages。您需要在extended_permission中设置此选项。这里的关键是获得正确的标记。文本字段中的令牌可能无法在大多数情况下运行。您需要发送GET请求到https://graph.facebook.com/YOUR_PROFILE_ID/accounts以获取正确的令牌。似乎你已经得到了正确的。

我以前用过koala gem。如发布here

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

嗯,我必须说,Facebook的API文档缺乏开发人员友好。你需要深入挖掘才能获得最简单的工作。

我希望这会帮助您开始自动化FB帖子。

+0

这有帮助。我碰到的另一件事是,如果你使用测试用户的页面。发布到页面将失败。但在真实账户上它按预期工作。 – 2013-08-28 19:15:13

相关问题