Как не требовать электронную почту пользователя при использовании Rails Omniauth gem и Google OpenID - PullRequest
5 голосов
/ 13 февраля 2011

Мой текущий файл /config/initializers/omniauth.rb содержит:

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :open_id, nil, :name => 'google', :identifier => 'https://www.google.com/accounts/o8/id'
end

Когда я регистрируюсь через Google, перейдя в / auth / google, Google сообщает:

DOMAIN запрашивает некоторую информацию из вашей учетной записи Google. EMAIL - адрес электронной почты: NAME (EMAIL)

Моему приложению не нужна электронная почта пользователя, поэтому я хотел бы снять этот барьер для входа.Есть ли в любом случае снять это требование.Я обнаружил, что для Facebook я могу добавить свойство "scope" опций, например:

provider :facebook, 'APP_ID', 'APP_SECRET', {:scope => ''}

1 Ответ

3 голосов
/ 27 февраля 2011

Основываясь на кратком обзоре источника для стратегии OpenID (от которой наследуется аутентификация Google Aps), вы можете передать параметры, указывающие, какие атрибуты являются необязательными по сравнению с необходимыми для аутентификации Exchange (AX).

См. Исходный код здесь для параметров: https://github.com/intridea/omniauth/blob/master/oa-openid/lib/omniauth/strategies/open_id.rb

Исходя из этого, я думаю, что вы можете изменить параметры, например, чтобы удалить электронную почту как обязательный атрибут:

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :open_id, nil, :name => 'google', :identifier => 'https://www.google.com/accounts/o8/id', :required => [], :optional => []
end

Удачи. Я не проверял это, просто читал источник.

...