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 カレンダーに新しいエントリがある場合、トークンの有効期限が切れているため、Web アプリは新しいイベントを取得できません。

この問題を解決する方法は何ですか?

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_promptののをリクエストする必要があると思いますoffline

于 2012-11-01T05:47:20.580 に答える