Как мне НЕ требовать электронную почту пользователя при использовании Rails Omniauth gem и Google OpenID

Мой текущий файл /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 ответ

Решение

Основываясь на кратком обзоре источника для стратегии OpenID (от которой наследуется аутентификация Google Aps), вы можете передать параметры, указывающие, какие атрибуты являются необязательными по сравнению с необходимыми для аутентификации Attributes 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

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

Другие вопросы по тегам