fb_graph 作为 rails 应用程序的组成员在 facebook 组上发布
Posted
技术标签:
【中文标题】fb_graph 作为 rails 应用程序的组成员在 facebook 组上发布【英文标题】:fb_graph post on a facebook group as a group member from rails app 【发布时间】:2016-02-08 09:27:40 【问题描述】:目前,我有一个 rails 应用程序。如果用户通过facebook
进行身份验证,那么他可以在我的应用程序上发布一些内容。保存帖子后,我的 rails 应用程序会将用户的帖子发布到我的 facebook 群组。有可能吗?
我正在使用fb_graph gem。在用户发帖后,我完成了after_create
回调以在 facebook 上发帖。这是回调代码:
def post_story_to_facebook
if self.user.authentications.pluck(:provider).include?('facebook')
page = FbGraph::Group.new('ct.dhk.group') # group name
# where should I declare the user who is posting?
page.feed!(
:message => 'Updating via FbGraph',
:link => 'https://domain.tld',
:name => 'PageName',
:description => 'This is a test post to be deleted'
)
end
end
上述方法无效,不知道如何代用户发帖?
【问题讨论】:
【参考方案1】:我们有一个类似的工作测试代码。您需要将facebook_user_access_token
存储在您的用户模型中(如果您没有,请添加一个新属性,并在每次用户通过 OAuth 进行身份验证时更新该属性,或者仅在更新令牌时更新)。请参阅以下内容。
post = Post.find(1) # your post
facebook_page_id = '1234567890' # your Facebook group id
facebook_user_access_token = current_user.facebook_user_access_token # the current user's Facebook user access token
page = FbGraph::Page.new(facebook_page_id)
facebook_page_access_token = page.get_access_token(access_token: facebook_user_access_token)
me = FbGraph::User.me(facebook_page_access_token)
me.feed!(
message: post.title,
link: post_url(post),
description: post.content,
picture: post.main_image.url
)
更新:
尚未测试,但正在查看 this 和 this
建议以下方法可行:
group = FbGraph::Group.new(GROUP_ID)
group.feed!(
access_token: USER_ACCESS_TOKEN_WITH_PROPER_PERMISSIONS,
message: post.content
)
很遗憾,我还没有时间测试。你可以试试这是否可行?
【讨论】:
组没有像access_token
这样的任何属性,这就是它抛出错误的原因:OAuthException :: (#100) Tried accessing nonexisting field (access_token) on node type (Group)
@Emu,更新了我的答案。能不能试试看?
USER_ACCESS_TOKEN_WITH_PROPER_PERMISSIONS
是什么意思?新错误是The user hasn't authorized the application to perform this action
。那么,我应该启用哪些权限?
@Emu,来自second link in my answer,看来user_managed_groups
和publish_actions
都需要以上是关于fb_graph 作为 rails 应用程序的组成员在 facebook 组上发布的主要内容,如果未能解决你的问题,请参考以下文章
如何将 Rails 5 API 应用程序转换为既可以作为 API 又可以作为应用程序的 Rails 应用程序?