如何保持盒式令牌有效?

时间:2019-05-10 19:00:02

标签: ruby-on-rails ruby box-api boxapiv2

我有一个Rails应用程序在heroku上运行,我需要在其中创建Box.comgem for the Box Content API使用项创建回调上的文件夹!

Box API的标准OAuth 2.0(用户身份验证)提供持续一小时的令牌。我一直需要令牌,以便该应用程序可以随时从该应用程序创建box文件夹。

最近,还实现了Box Webhook功能。

我尝试了以下几种方法,但没有帮助:

  1. 根据boxr gem的建议刷新令牌刷新回调!
    token_refresh_callback = lambda {|access, refresh, identifier|
      Setting.box_access_token     = access
      Setting.box_refresh_token    = refresh
    }

    @client = Boxr::Client.new(
        Setting.box_access_token,
        refresh_token: Setting.box_refresh_token,
        client_id:     Setting.box_client_id,
        client_secret: Setting.box_client_secret, &token_refresh_callback
    )
  1. 在初始化之前调用了一种方法来更新令牌
unless (Time.now.to_i >= Setting.box_token_expires_in.to_i - 300)
      token                        = Boxr::refresh_tokens(Setting.box_refresh_token, client_id: Setting.box_client_id, client_secret: Setting.box_client_secret)
      Setting.box_access_token     = token.access_token
      Setting.box_refresh_token    = token.refresh_token
      Setting.box_token_expires_in = Time.now.to_i + token.expires_in.to_i
    end
  1. 使用的调度程序基本上调用一种方法来执行上一步中的操作。

第2步之前可以正常工作,但有时有刷新令牌过期异常。突然无法使用,需要每小时手动重置令牌。不确定,但是它可能在实现Box Webhook功能后开始。

很高兴有建议/解决方案来保持令牌的生命力...

0 个答案:

没有答案