0

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

  • 创建了一个 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" 语句。这完全可以避免吗?我已授予我创建的应用程序发布到我的墙上的权限。有没有办法使用考拉(或其他宝石/库)在脚本中自动获取新的访问令牌?

4

2 回答 2

0

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

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

于 2013-10-07T19:31:49.490 回答
0

您可以自动化而不是硬编码短期令牌。您可以使用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。

于 2013-10-11T17:14:53.560 回答