Как использовать и настраивать omniauth с помощью стратегий yahoo, google, facebook в различных средах?
Я работаю над приложением Rails 3.2, которое позволит пользователям проходить аутентификацию у нескольких поставщиков ... Yahoo, Google, Facebook и / или Twitter. Мы используем omniauth, и хотя я понимаю основной рабочий процесс, я не могу найти инклюзивный документ, в котором говорится, как каждый из этих конкретных поставщиков должен быть настроен, ни как приложение Rails должно быть настроено, чтобы я мог должным образом протестировать/использовать эти стратегии в среде разработки, тестирования и производства.
Итак, мой вопросы:
-
Для каждого из этих поставщиков (yahoo, google, twitter, facebook), какие шаги необходимы, чтобы настроить каждый из них индивидуально для omniauth, так что они могут быть использованы в разработке, тестировании и производственных средах?
-
Каков наилучший / рекомендуемый способ настроить приложение Rails для правильного использования каждого из этих поставщиков для любой среды, в которой я работаю?
Спасибо-wg
2 ответа:
Что касается вашего первого вопроса:
Вам нужно создать приложения для 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
А затем следуют эта железнодорожная передача и эта Вики. Вы должны использовать переменные окружения, такие как
ENV['FACEBOOK_KEY']
, и устанавливать их в консоли, чтобы вы могли изменять их во время выполнения и чтобы они не были помещены в определенный файл в вашем репозитории (особенно если у вас есть открытый файл). вот решение для этого проблема.И наконец, вы должны искать дополнительную информацию в вики gem каждого поставщика. Например, в facebook omniauth камень ридми пример хэш-код проверки подлинности возвращается на Facebook, когда пользователь выполняет проверку подлинности с помощью Facebook. Затем вы можете использовать эту информацию для настройки модели пользователя (обновить его полное имя или образ в соответствии с тем, что вы хотите сделать). В нем также упоминается, как вы можете запросить дополнительные разрешения для доступа к пользовательским данным, которые не являются общедоступными доступный.
Правка: чтобы ответить на ваш вопрос:
Как я уже сказал, мне очень нравятся железнодорожные передачи, и я следил за 2 эпизодами, где Devise и OmniAuth были объединены. В этих эпизодах драгоценный каменьomniauth-openid
используется для аутентификации в Google. Недостатком этого является то, что, поскольку вы не регистрируете приложение, вы не можете настроить запрос Аутентификации. С помощью Facebook и Twitter вы можете выбрать имя, ввести описание и загрузить логотип вашего приложения. Вы также можете установить ссылки на Страницы" конфиденциальность "и" Условия использования " на вашем веб-сайте. Все эти мелкие детали появятся перед пользователем, когда он попытается войти в систему с помощью этих сервисов, и, как вы можете себе представить, они повлияют на ваши показатели конверсии пользователей.С помощью
omniauth-openid
Вы не можете настроить приглашение, и информация, которую вы получаете, ограничена (только электронная почта и имя, связанное с учетной записью). Если это все, что вам нужно, тогда все готово. Однако если вы хотите получить изображение пользователя, возможно, получите доступ только к другой личной информации доступно из профиля пользователя Google+, то, вероятно, лучше просто пойти с omniauth-google2 .Хорошая вещь в OmniAuth заключается в том, что как только вы получаете базовый фундамент, добавление других поставщиков так же просто, как регистрация приложения, получение ключа API и секрета и включение определенного драгоценного камня. Я бы предложил начать сначала с Facebook, так как это самый популярный сервис и, как таковой, с наибольшим количеством документации (или, по крайней мере, с большим количеством вопросов здесь на так). Затем создайте приложение и добавьте другие методы проверки подлинности.
В настоящее время я помещаю материал, специфичный для среды, в config/initializers/devise.rb. Например Facebook:
# Facebook strategy require "omniauth-facebook" case Rails.env when "development" config.omniauth :facebook, 'xxx', 'xxx', {:scope => 'manage_pages,publish_stream,offline_access,email'} when "production" config.omniauth :facebook, 'xxx', 'xxx', {:scope => 'manage_pages,publish_stream,offline_access,email'} end
Надеюсь, это вам поможет.