我想每天使用ruby脚本和考拉宝石制作一篇Facebook帖子。我希望能够设置一次,而不必继续更改访问权限。阅读了一些帖子并Facebook documentation around Access Tokens后,我实施了以下内容:
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
token = "CAAFlZAPhVBO8..." @graph = Koala::Facebook::API.new(token) @graph.put_connections("me", "feed", :message => "My message!")
通过所有这些设置,我的脚本实际上有效!它每天根据调度程序写入我的墙。
我的问题是:使用此设置我将不得不手动使用图形api资源管理器创建一个新的短期访问令牌,然后使用它来每两个月获取一个长期访问令牌。此外,我将不得不进入并在y脚本中手动更改token =“blah blah”语句。这可以避免吗?我给了我创建的应用程序,允许发布到我的墙上。有没有办法使用Koala(或其他gems / libs)在脚本中自动获取新的访问令牌?
答案 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。