从Rails发布到Facebook粉丝页面墙

res*_*est 6 gem facebook ruby-on-rails facebook-graph-api

我为我的rails应用程序制作了一个facebook粉丝页面,我希望能够将rails应用程序中的数据发布到facebook粉丝专区的墙上.

经过大量的网络挖掘后,我发现我对很多术语感到困惑.我发现的大多数解决方案,包括fb_graph gem都要求一个ACCESS_TOKEN,它需要一个APP_SECRET和一个APP_ID.我可以找到该页面的ID,但我不认为我只能获得一个正常的粉丝页面的APP_SECRET.

gem文档说我可以使用此代码段发布到Feed:

me = FbGraph::User.me(ACCESS_TOKEN)
me.feed!(
    :message => 'Updating via FbGraph',
    :picture => 'https://graph.facebook.com/matake/picture',
    :link => 'http://github.com/nov/fb_graph',
    :name => 'FbGraph',
    :description => 'A Ruby wrapper for Facebook Graph API'
)
Run Code Online (Sandbox Code Playgroud)

哪个好,除了我不知道我是否可以在没有APP_SECRET和APP_ID的情况下获得ACCESS_TOKEN.

我需要创建一个Facebook应用程序吗?(我认为这与普通粉丝页面不同...)我希望用户能够"喜欢"页面,以便我在新闻Feed中发布的内容也会显示在他们的新闻Feed中.

它只有一页,我认为我不需要通过OAUTH验证用户...我不希望它们发布在页面的墙上,只是发布在它自己的墙上的页面.但我希望它能实现自动化.

我怎样才能做到这一点?

小智 7

是的,要获得访问令牌,您需要client_id和client_secret.一旦你得到它们,这个示例应用程序将为您提供自己的访问令牌.(在config/facebook.yml中编辑client_id,client_secret和权限.至少需要"manage_pages"权限)

https://github.com/nov/fb_graph_sample

在fb_graph的情况下,您可以使用此代码将消息作为页面本身发布.

owner = FbGraph::User.me(USER_ACCESS_TOKEN)
pages = owner.accounts
page = pages.detect do |page|
  page.identifier == '117513961602338'
end
page.feed!(:message => 'test')

您可以存储page.access_token以备将来使用如果您已有页面访问令牌,则可以像这样调用.

page = FbGraph::Page.new(PAGE_ID, :access_token => PAGE_ACCESS_TOKEN)
page.feed!(:message => 'test')

PS. me.feed!(...)作为页面所有者发布而不是页面本身.


Mic*_*ley 2

简短的回答是,是的,您将需要一个 Facebook 应用程序。请参阅本答案末尾的警告。

正如您所发现的,与 Facebook 的所有外部交互都是通过访问令牌的用户进行的。要获取用户的访问令牌,应用程序必须根据您的应用程序App IDApp Secret将用户转发到特殊 URL ,在该 URL 中将向用户显示权限对话框:

Facebook Connect http://s3.amazonaws.com/files.posterous.com/mockupstogo/AIcVc2qmfB9qDwOBuQp4vdylKkM2wZiWhjQezBjTO1L0qym0agkSWQFNNobe/Facebook_Connect.png?AWSAccessKeyId=AKIAJFZAE65UYRT34AOQ&Expires=1301690929&Signature =cwibcaeH6GGbVA3gC2AAyvcEco0%3D

一旦用户批准了申请,Facebook 就会将他们发送回回调 URL,并附上特殊代码。此代码可用于获取用户的访问令牌,然后该用户可以作为该用户在 Facebook 上执行操作(基于您的 Facbook 应用程序请求的权限)。

由于您只希望自己的帐户/应用程序能够发布到墙上,因此一个好主意是获取永久访问令牌并将该令牌存储在您的应用程序中的某个位置。虽然 OAuth 2 确实支持非 Web 应用程序的“用户代理流”,但 Facebook 并不直接支持它。有关更多信息,请参阅https://developers.facebook.com/docs/authentication/的“桌面应用程序”部分。