ruby-on-rails - 如何使用来自服务器(!)的 Koala Gem 更新/延长 Facebook 访问 token ,完全没有用户交互

标签 ruby-on-rails facebook authentication omniauth koala

我的情况和我所拥有的:

  1. Rails 应用程序(最新版本的 Rails)
  2. 考拉 gem (最新版本)
  3. 1(一个)Facebook 用户(例如 - 是我),仅此而已,没有更多用户(!)
  4. 没有任何 FB 登录表单/类似内容的网站上的页面

现在情况:

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

我已经做了什么:

  1. 我添加了 Koala gem
  2. 然后我在 FB 的开发者帐户下创建了应用程序,并授予该应用程序对我的个人资料的完全访问权限(它是相同的个人资料 - 开发者和我想从中提取帖子)
  3. 然后我从这里创建了应用程序访问 token (https://developers.facebook.com/tools/accesstoken) - 当我调试它时,FB 告诉我,这个 token 是一个短期 token ,将在 1 小时后过期。
  4. 然后我在我的模型中创建了该代码:

    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)
    

所以,我第一次将我的短期 token 直接放在数据库中,这样我的代码就可以从那里提取它,然后,当我重新加载页面时,我得到了新的长期 token (它的到期日期是 12 月 1 日/2015).

但是!每次我重新加载我的页面时,我都会得到新的 token 但具有相同的到期日期(当我从我的页面复制 token 并将其粘贴到调试器时,FB 的调试器告诉我同样的情况)。

我什至尝试在不同的日子里这样做,因为我在“某处”读到 token 更新期是每天一次,但是:

token 始终不同,但到期日期始终相同。

我需要什么:

要更新该 token 或编写代码,以便无需我这边的操作即可自动更新 token ,因为没有登录窗口或类似的东西。它应该只能在服务器端工作。

有什么想法吗?已经阅读了很多信息和类似的问题,但大多数问题都与用户交互有关,比如以适当的形式登录等,所以 - 运气不好:/

最佳答案

你可以试试这个方法。

@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)

关于ruby-on-rails - 如何使用来自服务器(!)的 Koala Gem 更新/延长 Facebook 访问 token ,完全没有用户交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26953458/

相关文章:

ruby-on-rails - 如何在 Ruby on Rails 中向现有模型添加第二个 Controller ?

css - Morris.js 图表显示在容器下方

javascript - 发表 Facebook 评论后重定向至网页

ios - iOS Facebook SDK 3.1 的设置按钮不起作用

java - Android - Accesstoken 错误 facebook

macos - Mac OS X - kinit 不使用/etc/krb5.conf

ruby-on-rails - 带有 html 的自定义验证错误消息

ruby-on-rails - rails 4.1 : Can't cast Hash to string

authentication - 如何在 Blazor WebAssembly 中实现 OIDC 身份验证?

Symfony 4 登录表单 : authenticating successfully, 但重定向后身份验证立即丢失