如何获取用户';谷歌日历是否坚持使用Ruby?

如何获取用户';谷歌日历是否坚持使用Ruby?,ruby,ruby-on-rails-3,google-api,oauth-2.0,google-calendar-api,Ruby,Ruby On Rails 3,Google Api,Oauth 2.0,Google Calendar Api,我的应用程序已经获取谷歌日历,但用户必须每次登录才能获取新日历。该问题是由于令牌在一段时间后过期而引起的 我已经尝试了以下方法,其中包括user.profile范围: Rails.application.config.middleware.use OmniAuth::Builder do provider :google_oauth2, GOOGLE_APP_KEY, GOOGLE_APP_SECRET, { scope: 'https://www.googleapis.com/

我的应用程序已经获取谷歌日历,但用户必须每次登录才能获取新日历。该问题是由于令牌在一段时间后过期而引起的

我已经尝试了以下方法,其中包括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日历有新条目,我的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!
我相信您需要请求
脱机
批准\u提示
,以获取刷新令牌