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



我的应用程序已经获取了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!

我相信您需要向offlineapproval_prompt要求刷新令牌

相关内容

  • 没有找到相关文章

最新更新