Facebook 使用Graph API发布到FB

Facebook 使用Graph API发布到FB,facebook,facebook-graph-api,koala,koala-gem,Facebook,Facebook Graph Api,Koala,Koala Gem,我想用ruby脚本和考拉宝石每天发一次facebook帖子。我希望能够设置一次,而不必不断更改对KNS的访问。在阅读了一些帖子后,我实现了以下几点: 创建了一个Facebook应用程序 使用Graph API资源管理器为自己获取访问令牌-这仅持续约2小时 使用以下脚本将短期令牌交换为持续2个月的长期令牌 https://graph.facebook.com/oauth/access_token? 客户端id=应用程序id& 客户端密码=应用程序密码& grant\U

我想用ruby脚本和考拉宝石每天发一次facebook帖子。我希望能够设置一次,而不必不断更改对KNS的访问。在阅读了一些帖子后,我实现了以下几点:

  • 创建了一个Facebook应用程序
  • 使用Graph API资源管理器为自己获取访问令牌-这仅持续约2小时
  • 使用以下脚本将短期令牌交换为持续2个月的长期令牌
https://graph.facebook.com/oauth/access_token? 客户端id=应用程序id& 客户端密码=应用程序密码& grant\U type=fb\U交换\U令牌& fb_交换_令牌=现有_访问_令牌
  • 写了下面的rake任务发布到我的Facebook墙上
token=“CAAFlZAPhVBO8…” @graph=Koala::Facebook::API.new(令牌) @graph.put_连接(“我”,“提要”,“消息=>“我的消息!”)
  • 使用调度rake命令
通过所有这些设置,我的脚本实际上可以工作!它每天根据调度程序写入我的墙壁


我的问题是:使用此设置,我必须手动使用graph api explorer创建一个新的短期访问令牌,然后每两个月使用该令牌获取一次长期访问令牌。此外,我还必须进入并手动更改y脚本中的token=“blah blah”语句。这是可以避免的吗?我已授予我创建的应用程序发布到我的墙的权限。有没有办法使用考拉(或其他gems/libs)在脚本中自动获取新的访问令牌?

一旦用户授予你的应用程序发布\u操作权限,你也可以使用你的应用程序访问令牌以他们的名义发布墙帖–你只需交换实际用户id即可(因为没有用户访问令牌,API就不知道“我”应该是谁)


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

您可以自动对短期令牌进行编码,而不是硬编码。 您可以使用omniauth facebook gem自动进行omniauth登录。请参阅。将其添加到您的gem文件中

 gem 'omniauth-facebook', '1.4.0'
在配置路由中,匹配回调

match '/auth/:provider/callback' => '[your controller]#[your function]'
成功登录并登录回调函数后,您将在
request.env[“omniauth.auth”][“credentials”][“token”]

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

我假设您使用的是RubyonRails,因为您使用的是考拉宝石

 gem 'omniauth-facebook', '1.4.0'
match '/auth/:provider/callback' => '[your controller]#[your function]'