月前私は、oauth2を使ってgoogleで認証されたレールアプリを作成しました。特に、omniauth-google-oauth2 gemです。私は、認証を作成し、リフレッシュ・トークンを格納するためのすべての手順を実行しましたが、最近oauth2はレスポンスの一部として 'refresh_token'を戻しませんでした。omniauth google oauth2を使ってレールアプリの「refresh_token」を返すにはどうすればよいですか?
credentials: {
refresh_token: XXX,
token: YYY,
expires_at: 1374840767,
expires: true
},
を今私は時間以内に期限が切れたトークン取り戻す:
credentials: {
token: YYY,
expires_at: 1374840767,
expires: true
},
を私は本当に私がアプリケーション側で何をしたか分からないもともと私が含まれている応答を受信しましたこれを変更して、Googleで何かが変わったのかどうか、あるいはそれが何かだったのかどうかはわかりません。コンテキストのために、私のコードは次のようになります。
初期化子/ omniauth.rb:
Rails.application.config.middleware.use OmniAuth::Builder do
provider :google_oauth2, 'KEY', 'SECRET', {:scope => "userinfo.email,userinfo.profile,analytics.readonly,adsense.readonly"}
end
を、私は、応答を受け取るところauthentications_controller.rbは次のとおりです。
def create
auth = request.env["omniauth.auth"]
params = request.env["omniauth.params"]
project = Project.find(params['project_id'])
Authentication.create(:project_id => project.id, :provider => auth['provider'], :uid => auth['uid'], :access_token => auth['credentials']['refresh_token'])
flash[:notice] = "Authentication successful."
redirect_to owner_view_project_path(project)
end
は、それは何かが中に欠けていることは可能です私のinitializers/omniauth.rbファイル?私はオプションのハッシュに以下を追加しようとしたが、それはリフレッシュトークンを戻すようには見えなかった。
:approval_prompt => "force", :access_type => "offline"
任意の助けをいただければ幸いです!前もって感謝します!
この問題を解決しましたか?私は今、同じ問題に直面しています。私はあなたが解決策を見たいと思っています。ありがとう! –