Что касается вашего первого вопроса:
Вам необходимо создать приложения для Facebook, Google и Twitter, чтобы разрешить использование их протокола OAuth.Что касается Yahoo, я не знаю.Yahoo по-прежнему актуальна?Просто шучу.Чтобы получить список всех доступных стратегий провайдера Omniauth, перейдите по ссылке здесь .
Итак, Facebook:
https://developers.facebook.com/apps
Create app. You'll be given an API Key and an API Secret.
Settings > Basic > Website > Site URL:
your_website_callback_url for production
Twitter:
https://apps.twitter.com/
Create app. You'll be given an API Key and an API Secret.
Settings > Callback URL:
your_website_callback_url for production
Google:
https://console.developers.google.com
Create app. You'll be given an API Key and an API Secret.
Services > Select necessary services and scopes
APIs & auth > Credentials > Create New Client ID:
http://localhost:3000/ for development/testing
your_website_callback_url for production
Затем ваш Gemfile:
gem 'omniauth-facebook'
gem 'omniauth-twitter'
gem 'omniauth-google-oauth2'
Создайте файл для настройки ваших стратегий.Соглашение называет это omniauth.rb.У каждого провайдера есть куча разных опций, вам нужно выяснить, что это:
# config/initializers/omniauth.rb
Rails.application.config.middleware.use OmniAuth::Builder do
provider :facebook, 'FACEBOOK_KEY', 'FACEBOOK_SECRET', {
secure_image_url: 'true',
image_size: 'square'
}
provider :twitter, 'TWITTER_KEY', 'TWITTER_SECRET', {
secure_image_url: 'true',
image_size: 'normal'
}
provider :google_oauth2, 'GOOGLE_KEY', 'GOOGLE_SECRET', {
image_size: 50,
image_aspect_ratio: 'square'
}
end
, а затем следовать этому Railscast и этой вики .Вам следует использовать переменные окружения, такие как ENV['FACEBOOK_KEY']
, и устанавливать их в консоли, чтобы вы могли изменять их во время выполнения и чтобы они не помещались в определенный файл в ваш репозиторий (особенно если у вас есть открытый). Вот решение этой проблемы.
Наконец, вам нужно найти вики каждого провайдера для получения дополнительной информации.Например, readm в файле omniauth для facebook предоставляет пример аутентификационного хэша, возвращаемого Facebook, когда пользователь проходит аутентификацию через Facebook.Затем вы можете использовать эту информацию для настройки вашей пользовательской модели (обновите его полное имя или изображение в соответствии с тем, что вы хотите сделать).В нем также упоминается, как вы можете запросить дополнительные разрешения для доступа к пользовательским данным, которые не являются общедоступными.
Редактировать: Чтобы ответить на ваш вопрос:
Как я уже сказал, мне действительно нравятся Railscasts, и я следовал2 эпизода, где были интегрированы Devise и OmniAuth.В этих эпизодах камень omniauth-openid
используется для аутентификации в Google.Недостатком является то, что, поскольку вы не регистрируете приложение, вы не можете настроить запрос аутентификации.С помощью Facebook и Twitter вы можете выбрать имя, ввести описание и загрузить логотип вашего приложения.Вы также можете установить ссылки на страницы «Конфиденциальность» и «Условия использования» на своем веб-сайте.Все эти мелкие детали появятся у пользователя, когда он попытается войти в систему с помощью этих сервисов, и, как вы можете себе представить, они влияют на ваши показатели конверсии.
С omniauth-openid
вы не можете настроить приглашение иинформация, которую вы получаете, ограничена (только адрес электронной почты и имя, связанное с учетной записью).Если это все, что вам нужно, то все готово.Однако, если вы хотите получить изображение пользователя или, возможно, получить доступ к другой личной информации, доступной только из профиля Google+ пользователя, то, вероятно, лучше просто набрать omniauth-google2 .
.Хорошая вещь в OmniAuth заключается в том, что, как только вы начнете работать с базовым фундаментом, добавить других провайдеров так же просто, как зарегистрировать приложение, получить ключ и секретный ключ API и включить определенный драгоценный камень.Я бы посоветовал начать сначала с Facebook, так как это самый популярный сервис и, как таковой, тот, на котором больше всего документации (или, по крайней мере, тот, у которого больше вопросов здесь о SO).Оттуда создайте свое приложение и добавьте другие методы аутентификации.