Как мне НЕ требовать электронную почту пользователя при использовании 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
Удачи. Я не проверял это, просто читал источник.