目前,我有一个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
以上方法无效,我不知道如何代表用户发帖?
答案 0 :(得分:2)
我们有一个类似的工作测试代码。您需要将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
)
<强>更新强>
建议以下方法可行:
group = FbGraph::Group.new(GROUP_ID)
group.feed!({
access_token: USER_ACCESS_TOKEN_WITH_PROPER_PERMISSIONS,
message: post.content
})
不幸的是,我还没有时间去测试。如果能起作用,你能试试吗?