如何使用Ruby持久获取用户的Google日历?

时间:2012-10-31 19:14:40

标签: ruby ruby-on-rails-3 google-api oauth-2.0 google-calendar-api

我的应用已经提取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日历有新条目,我的网络应用程序将无法获取新事件,因为令牌是过期。

解决这个问题的方法是什么?

1 个答案:

答案 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申请刷新令牌