Ruby on rails 如何在完全没有用户交互的情况下,从服务器(!)使用考拉宝石更新/延长Facebook访问令牌

Ruby on rails 如何在完全没有用户交互的情况下,从服务器(!)使用考拉宝石更新/延长Facebook访问令牌,ruby-on-rails,facebook,authentication,omniauth,koala,Ruby On Rails,Facebook,Authentication,Omniauth,Koala,我的处境和我所拥有的: Rails应用程序(Rails的最新版本) 考拉宝石(最新版) 1(一)个Facebook用户(例如,是我),仅此而已,没有更多用户(!) 网页上没有任何FB登录表单/类似内容 现在的情况: 我在一个网站上创建页面,我的代码应该从我的Facebook帐户中提取最后的帖子并显示在该页面上 我已经做过的: 我加了考拉宝石 然后,我在FB的开发者帐户下创建了一个应用程序,并授予该应用程序对我个人资料的完全访问权(它是相同的个人资料-开发者,我想从中获取帖子) 然后我从这里创建了

我的处境和我所拥有的:

  • Rails应用程序(Rails的最新版本)
  • 考拉宝石(最新版)
  • 1(一)个Facebook用户(例如,是我),仅此而已,没有更多用户(!)
  • 网页上没有任何FB登录表单/类似内容
  • 现在的情况:

    我在一个网站上创建页面,我的代码应该从我的Facebook帐户中提取最后的帖子并显示在该页面上

    我已经做过的:

  • 我加了考拉宝石
  • 然后,我在FB的开发者帐户下创建了一个应用程序,并授予该应用程序对我个人资料的完全访问权(它是相同的个人资料-开发者,我想从中获取帖子)
  • 然后我从这里创建了appaccesstoken()——当我调试它时,FB告诉我,这个token是一个短生命的token,将在1小时内过期
  • 然后我在我的模型中创建了代码:

    oauth = Koala::Facebook::OAuth.new(APP_ID, APP_SECRET)
    new_access_info = oauth.exchange_access_token_info self.get_token <- here i pull token from DB
    
    new_access_token = new_access_info["access_token"]
    new_access_expires_at = DateTime.now + new_access_info["expires"].to_i.seconds
    
    self.update_all(:token => new_access_token) ***<- saving token in db***
    self.update_all(:exp => new_access_expires_at) ***<- saving expiration of token in db***
    
    @facebook ||= Koala::Facebook::API.new(self.get_token)
    
    oauth=Koala::Facebook::oauth.new(APP\u ID,APP\u SECRET)
    
    new\u access\u info=oauth.exchange\u access\u token\u info self.get\u token new\u access\u token)***新的\u access\u expires\u at)***您可以尝试此方法

    @oauth = Koala::Facebook::OAuth.new(ENV['fb_app_id'], ENV['fb_app_secret'])
    oauth_access_token = @oauth.get_app_access_token
    
    @graph = Koala::Facebook::API.new(oauth_access_token)
    

    @Jobili,是否使用了Mike的解决方案?
    获取应用访问令牌
    获取应用访问令牌,该令牌只能用于“修改和读取应用设置”和“发布打开的图形操作”