我正在使用omniauth-google-oauth2
gem将Oauth2通过Google添加到我的Rails应用中。我根据宝石的自述文件设置了所有内容。当我点击我的应用中的授权按钮时,我会被引导到Google授权该应用。一旦我被发送回我的重定向路径,我会收到包含token
,refresh_token
和expires_at
(不是expires_in
)的数据哈希,但是{{{ 1}}总是等于expires_at
。哈希看起来像这样:
Time.now.to_i
我想要做的是每次登录应用程序时以编程方式更新用户的令牌,而不强迫他们完成初始授权过程。我为Facebook设置了类似的令牌续订流程,但我无法弄清楚如何让这项工作适用于Google,因为令牌=> auth.credentials
=> {
token: 'token',
refresh_token: 'refresh_token',
expires_at: 1468603958
expires: true
}
时间已经到了。
我的问题分为两部分:
expires_at
的价值不应该在将来(例如从现在起1小时,或从现在起30天)?expires_at
以编程方式刷新令牌?我似乎无法在Ruby中找到关于如何执行此操作的单个示例。我想在我的应用中的refresh_token
上设置一个方法来检查GeneralController
模型的expires_at
值,然后运行一些逻辑来更新令牌,但我无法想象如何更新令牌。鉴于我从Google获得的Identity
值等于expires_at
,这似乎也有问题。如果我使用该值,则会触发无限循环。这是我想在伪代码中做的事情:
Time.now.to_i