fb_graph在一个facebook组上发布作为rails app的组成员

时间:2016-02-08 09:27:41

标签: ruby-on-rails facebook-graph-api fb-graph

目前,我有一个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 个答案:

答案 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
)

<强>更新

Haven未经测试,但正在查看thisthis

建议以下方法可行:

group = FbGraph::Group.new(GROUP_ID)
group.feed!({
  access_token: USER_ACCESS_TOKEN_WITH_PROPER_PERMISSIONS,
  message: post.content
})

不幸的是,我还没有时间去测试。如果能起作用,你能试试吗?