使用Graph API发布到FB

时间:2013-10-07 16:54:29

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

我想每天使用ruby脚本和考拉宝石制作一篇Facebook帖子。我希望能够设置一次,而不必继续更改访问权限。阅读了一些帖子并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墙
token = "CAAFlZAPhVBO8..."
@graph = Koala::Facebook::API.new(token)
@graph.put_connections("me", "feed", :message => "My message!")

通过所有这些设置,我的脚本实际上有效!它每天根据调度程序写入我的墙。

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

2 个答案:

答案 0 :(得分:0)

一旦用户授予了您的app publish_actions权限,您还可以使用您的应用访问令牌在其名称中发布墙贴 - 您只需要交换me作为实际用户ID(因为没有用户)访问令牌,API无法知道谁应该是“我”。

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

答案 1 :(得分:0)

您可以自动化而不是硬编码短期令牌。 您可以使用omniauth-facebook gem自动执行omniauth登录。请参阅Github。将其添加到您的gemfile中。

 gem 'omniauth-facebook', '1.4.0'

在配置路由中,匹配回调

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

一旦您成功登录并登陆回调函数,您将在[{1}}

中的回复中存储令牌

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

我假设您正在使用Ruby on Rails,因为您正在使用Koala gem。