我为我的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'
)
哪个好,除了我不知道如果没有APP_SECRET和APP_ID我是否可以获得ACCESS_TOKEN。
我是否需要创建Facebook应用程序? (我认为这与普通的粉丝页面不同...)我希望用户能够“喜欢”这个页面,这样我在新闻Feed中发布的内容也会显示在他们的新闻Feed中。
这只是一页,我不想我需要通过OAUTH验证用户...我不希望他们在页面墙上发帖,只是要在其拥有墙上发布的页面。但我希望它能实现自动化。
我该怎么做?
答案 0 :(得分: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!(...)
作为网页所有者发布,而不是网页本身。
答案 1 :(得分:2)
简短的回答是是的,您需要一个Facebook应用。请参阅本答案末尾的警告。
正如您所发现的,所有与Facebook的外部互动都是通过访问令牌的用户进行的。要获取用户的访问令牌,应用程序必须根据您的应用程序应用程序ID 和应用程序密钥将用户转发到特殊URL,这是他们将被呈现的位置使用权限对话框:
用户批准该应用程序后,Facebook会将其发送回回调网址,并附上特殊代码。此代码可用于获取用户的访问令牌,然后用户可以在Facebook上以该用户身份执行操作(基于您的Facbook应用程序请求的权限)。
由于您只希望自己的帐户/应用能够发布到墙上,因此一个好主意是获取永久访问令牌并将该令牌存储在您的应用中。虽然OAuth 2确实支持非Web应用程序的“用户代理流程”,但Facebook不直接支持它。有关详情,请参阅https://developers.facebook.com/docs/authentication/的“桌面应用”部分。
答案 2 :(得分:2)
如果您的应用程序已经将更新发布到Twitter,您可以使用Twitter自动将这些推文发布到您的Facebook粉丝页面。以下Twitter支持文章概述了如何关联您的帐户:https://support.twitter.com/articles/31113
答案 3 :(得分:1)
我非常喜欢gem nov matake创建的内容,我想我会转而使用它而不是其他人。让我试着稍微扩展一下这个答案。
facebook文档很好,但我认为在撰写本文时它仍然留下了很多漏洞。
我发现如果您想使用应用代表网页本身在网页上发帖,则需要三个权限。
如果没有离线访问权限,您的令牌将会过期,您的应用必须定期执行整个身份验证过程。使用上面的URL,您将获得一个非过期令牌来启动该过程。
未经此许可,我无法发布到该页面。
如果没有管理页面权限,我可以在页面上发布墙贴,但它们显示为源自我的个人帐户,而不是代表页面本身。
必须手动将所有上述权限授予您的帐户。在该权限过程之后,我可以使用fb_graph gem以及nov matake概述的步骤,使用offline_access权限步骤生成的永恒令牌。
答案 4 :(得分:1)
:picture => 'https://graph.facebook.com/matake/picture',
在页面中添加og:meta标记
<meta property="og:title" content="App.Name title"/>
<meta property="og:type" content="website"/>
<meta property="og:image" content="YOUR_URL/images/image.png"/>
<meta property="og:site_name" content="App.Name"/>
<meta property="og:url" content="YOUR_URL"/>
<meta property="og:description" content="description"/>