我的应用已经提取Google日历,但用户每次都必须登录才能获得新日历。一段时间后令牌因过期而过期。
我已经尝试过以下内容,包括user.profile范围:
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日历有新条目,我的网络应用程序将无法获取新事件,因为令牌是过期。
解决这个问题的方法是什么?
答案 0 :(得分:0)
我无法给你一个完整的答案,但我正在研究类似的功能,并找到了一些关于使用refresh token
的文档我还找到了使用该令牌获取新访问令牌here
的示例相关代码是:
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!
我相信您需要approval_prompt
offline
申请刷新令牌