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_groupspublish_actions都需要

以上是关于fb_graph 作为 rails 应用程序的组成员在 facebook 组上发布的主要内容,如果未能解决你的问题,请参考以下文章

由关联计数组成的 Rails 查询,最好使用范围

RAILS:如何查询是否已有一个由一组用户组成的团队

如何将 Rails 5 API 应用程序转换为既可以作为 API 又可以作为应用程序的 Rails 应用程序?

在 gem 中使用 rails 作为依赖项

何时使用 Mongrel 作为 Rails 应用程序的 Web 服务器?

Rails 中的自定义字段作为未来条目的模板