【问题标题】:Posting to FB using Graph API使用 Graph API 发布到 FB
【发布时间】:2024-01-04 06:14:01
【问题描述】:

我想使用 ruby​​ 脚本和 Koala gem 每天发布一次 Facebook 帖子。我希望能够设置一次,而不必不断更改对ekns 的访问。在阅读了一些帖子和Facebook documentation around Access Tokens 之后,我实现了以下内容:

  • 创建了 Facebook 应用
  • 使用 Graph API Explorer 为自己获取访问令牌 - 这只持续大约 2 小时
  • 使用以下脚本将短期令牌兑换为持续 2 个月的长期令牌
https://graph.facebook.com/oauth/access_token? client_id=APP_ID& client_secret=APP_SECRET& grant_type=fb_exchange_token& fb_exchange_token=EXISTING_ACCESS_TOKEN
  • 编写了以下 rake 任务以发布到我的 Facebook 墙上
令牌 = "CAAFlZAPhVBO8..." @graph = Koala::Facebook::API.new(token) @graph.put_connections("me", "feed", :message => "我的消息!")

通过所有这些设置,我的脚本实际上可以工作了!它每天都会根据调度程序写到我的墙上。

我的问题是:通过此设置,我将不得不使用图形 API 资源管理器手动创建一个新的短期访问令牌,然后每两个月使用它来获取长期访问令牌.此外,我将不得不进入并手动更改 y 脚本中的 token = "blah blah" 语句。这完全可以避免吗?我已授予我创建的应用程序发布到我的墙上的权限。有没有办法使用 Koala(或其他 gems/libs)在脚本中自动获取新的访问令牌?

【问题讨论】:

    标签: facebook facebook-graph-api koala koala-gem


    【解决方案1】:

    一旦用户授予您的应用 publish_actions 权限,您还可以使用您的应用访问令牌以他们的名义发布墙帖 - 您只需将 me 交换为实际用户 ID(因为没有用户访问令牌API 无法知道“我”应该是谁)。

    app_id|app_secret(中间的管道符号)组合可以作为应用访问令牌。

    【讨论】:

      【解决方案2】:

      您可以自动化而非硬编码短期令牌。 您可以使用omniauth-facebook gem 来自动化omniauth 登录。请参阅Github。将此添加到您的 gemfile。

       gem 'omniauth-facebook', '1.4.0'
      

      在配置路由中,匹配回调

      match '/auth/:provider/callback' => '[your controller]#[your function]'
      

      一旦你登录成功并登陆回调函数,你就会将令牌存储在request.env["omniauth.auth"]["credentials"]["token"]的响应中

      每次用户登录时使用此令牌并将其与长期令牌交换。您可以放心地假设用户在长期访问令牌的 60 天上限内至少登录两次。

      我假设您使用的是 Ruby on Rails,因为您使用的是 Koala gem。

      【讨论】: