2012-01-03 8 views
1

omniauth google-oauth2戦略でオフラインアクセストークン(refresh_token)を取得しようとしています。オフラインアクセスでOmniauth Google oauth2戦略

これは私のomniauth初期化子コードです:(それは正常に動作のOAuth2認証のためにGoogleにリダイレクトするとき、それは& ACCESS_TYPE =オフラインのような追加のURLパラメータを追加する必要があり

Rails.application.config.middleware.use OmniAuth::Builder do 
    provider :google_oauth2, KEY, SECRET, 
    :access_type => 'offline', 
    :scope => 'https://www.googleapis.com/auth/userinfo.profile' 
end 

が、それはそうしませんでした手動でパラメータを追加した場合)。

何か不足していますか?

+0

どのようにKEYとSECRETを取得しますか? – Thufir

答えて

1

zquestz/omniauth-google-oauth2をバージョン0.1.8にアップグレードすることでこれを修正しました。 明らかにこの問題は0.1.7でのみ発生します。

2

zquestzのgoogle_oauth2戦略でOmniauthを使用している場合、access_typeのデフォルト値は指定されていなければオフラインです。

* omniauth /戦略/のOAuth2/google_oauth2 *彼のgithubのから:私はスコープフィールドはハッシュにすることになっていると考えている側の注意点として

def authorize_params 
    base_scope_url = "https://www.googleapis.com/auth/" 
    super.tap do |params| 
     scopes = (params[:scope] || DEFAULT_SCOPE).split(",") 
     scopes.map! { |s| s =~ /^https?:\/\// ? s : "#{base_scope_url}#{s}" } 
     params[:scope] = scopes.join(' ') 
     # This makes sure we get a refresh_token. 
     # http://googlecode.blogspot.com/2011/10/upcoming-changes-to-oauth-20-endpoint.html 
     **params[:access_type] = 'offline' if params[:access_type].nil? 
     params[:approval_prompt] = 'force' if params[:approval_prompt].nil?** 
    end 
    end 

:{:範囲=> userinfo.profile }。

+0

はい、そうです。明らかに、zquestz/omniauth-google-oauth2のバージョン0.1.7はデフォルトに問題がありました。私はバージョン0.1.8にアップグレードすることでこれを解決しました –

関連する問題