Omniauth google oauth2 стратегия с автономным доступом - PullRequest
1 голос
/ 03 января 2012

Я пытаюсь получить автономный токен доступа (refresh_token) с помощью стратегии omniauth google-oauth2.

Это мой код инициализации omniauth:

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

При перенаправлении в Google дляПроверка подлинности oauth2, он должен добавить дополнительный параметр URL, такой как & access_type = offline, но не может этого сделать (он работает нормально, если я добавляю параметр вручную).

Я что-то упустил?

Ответы [ 2 ]

2 голосов
/ 06 января 2012

Если вы используете Omniauth со стратегией zquestz google_oauth2, то по умолчанию значение access_type будет офлайн, если оно не указано.

Из его github в * omniauth / стратегиях / oauth2 / google_oauth2 *:

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

В качестве примечания я полагаю, что поле области видимости должно быть в хэше: {: scope => userinfo.profile}.

1 голос
/ 17 января 2012

Исправлено это путем обновления zquestz / omniauth-google-oauth2 до версии 0.1.8. По-видимому, эта проблема возникает только в 0.1.7.

...