0

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

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

4

1 回答 1

0

我不能给你一个完整的答案,但我正在研究类似的功能,并找到了一些关于使用刷新令牌的文档

我还在这里找到了使用该令牌获取新访问令牌的示例

相关代码是:

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_promptoffline刷新令牌请求一个

于 2012-11-01T05:47:20.580 回答