OmniAuth для Facebook
Я пытаюсь использовать этот эпизод Railscast для аутентификации через твиттер http://railscasts.com/episodes/235-omniauth-part-1
Мне интересно, можно ли использовать omni auth для входа в систему с Facebook?
Кроме того, я хотел использовать селектор HTML OpenID, но в демоверсии нет кнопки facebook, и в их часто задаваемых вопросах предполагается, что у них нет поддержки facebook, однако на странице SO Authenticate действительно отображается facebook в качестве одной из кнопок. Селектор openid, который использует SO, является нестандартным?
3 ответа
Просто добавьте к вам учетные данные omniauth.rb для Facebook
Rails.application.config.middleware.use OmniAuth::Builder do
provider :facebook, 'CONSUMER_KEY', 'CONSUMER_SECRET'
end
В вашем сеансе или действии аутентификации (где вы работаете с твиттером) добавьте дополнительную логику для Facebook.
Как уже говорилось в других ответах, если вы хотите использовать omniauth с Facebook, просто следуйте ответу Михаила (вы получите ключ и секрет потребителя, зарегистрировавшись на Facebook). Если вы будете следовать этому шаблону, вы на самом деле будете проходить аутентификацию через facebook через OAuth2, а не через OpenID.
Если вы хотите использовать omniauth с провайдером OpenID, например, с Google, шаблон немного отличается, например:
Rails.application.config.middleware.use OmniAuth::Builder do
provider :openid, ActiveRecordOpenidStore::ActiveRecordStore.new, :name => 'google', :identifier => 'https://www.google.com/accounts/o8/id'
end
OpenID требует "хранилище" для хранения ассоциаций и одноразовых номеров, которые создаются в процессе аутентификации (в вышеупомянутом случае мы используем хранилище OpenID на основе ActiveRecord). С вышеупомянутой конфигурацией перейдем к следующему URL:
${RAILS_ROOT}/auth/google
Следует запустить процесс аутентификации OpenID против Google. Если вы хотите использовать другого провайдера OpenID для аутентификации, вам нужно будет изменить :name
а также :identifier
поля соответственно.
URL для входа на Facebook - railsroot/auth/facebook
URL логина для твиттера - railsroot/auth/twitter
в вашем инициализаторе omniauth.rb
require 'openssl'
OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE
Rails.application.config.middleware.use OmniAuth::Builder do
provider :twitter, ' consumerkey ', 'consumer-secret '
provider :facebook, 'api-key' ,'api-secret', {:scope=>'publish_stream,offline_access,email'}
end
используйте свои собственные права доступа к области