我的应用程序已经获取了Google日历,但是用户必须每次登录才能获取新日历。一段时间后,由于令牌即将到期,问题引起了。
我已经尝试了以下内容,其中包括用户。
Rails.application.config.middleware.use OmniAuth::Builder do
provider :google_oauth2, GOOGLE_APP_KEY, GOOGLE_APP_SECRET, {
scope: 'https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/calendar https://www.googleapis.com/auth/userinfo.profile',
redirect_uri: GOOGLE_APP_CALLBACK_URL
} 结束
所以,现在令牌持续存在,因此用户不必每次登录该应用程序,但是如果Google日历有新的条目,我的Web应用程序将无法获取新事件,因为代币是过期。
解决此问题的方法是什么?
我无法给您一个完整的答案,但是我正在研究类似的功能,并找到了一些有关使用刷新令牌的文档
我还找到了使用该令牌在此处获取新的访问令牌的示例
相关代码是:
client = OAuth2::Client.new(
"code", "secret",
:site => "https://accounts.google.com",
:token_url => "/o/oauth2/token",
:authorize_url => "/o/oauth2/auth")
access_token = OAuth2::AccessToken.from_hash(client,
{:refresh_token => current_user.refreshtoken})
access_token = access_token.refresh!
我相信您需要向offline
的approval_prompt
要求刷新令牌