OmniAuth для Facebook - PullRequest
       32

OmniAuth для Facebook

0 голосов
/ 04 августа 2011

Я пытаюсь использовать этот эпизод Railscast для аутентификации через твиттер http://railscasts.com/episodes/235-omniauth-part-1

Мне интересно, можно ли использовать omni auth для входа в систему с Facebook?

Кроме того, я хотел использовать HTML OpenID селектор , но в демоверсии нет кнопки facebook, и в их FAQ предлагается, однако, что у них нет поддержки facebook, однако, SO страница аутентификации показывает Facebook как одну из кнопок. Селектор openid, который использует SO, является пользовательским?

Ответы [ 3 ]

2 голосов
/ 04 августа 2011

просто добавьте к вам учетные данные omniauth.rb для Facebook

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :facebook, 'CONSUMER_KEY', 'CONSUMER_SECRET'
end

В вашем сеансе или действии аутентификации (где вы имеете дело с твиттером) добавьте дополнительную логику для facebook.

0 голосов
/ 06 августа 2011

Как уже говорилось в других ответах, если вы хотите использовать 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.

0 голосов
/ 06 августа 2011

URL для входа в Facebook - railsroot / auth / facebook

URL для входа в Twitter - 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

используйте свои собственные права доступа к области действия

...