2011-08-04 118 views
0

我試圖用這個railscast插曲通過Twitter來提供驗證http://railscasts.com/episodes/235-omniauth-part-1OmniAuth對於Facebook

我想知道是否可以使用全AUTH與Facebook登錄呢?

此外,我想使用HTML OpenID selector,但演示沒有facebook按鈕,他們的FAQ表示他們不支持Facebook,但是,SO Authenticate page確實將facebook顯示爲按鈕之一。 SO使用的openid選擇器是自定義的嗎?

+1

是的,OmniAuth支持Facebook。 –

回答

2

只需添加到您omniauth.rb憑據爲Facebook

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

在你的會話或認證行動(你對付Twitter的登錄)添加額外的邏輯爲Facebook。

0

的Facebook登錄網址 - railsroot /認證/ Facebook的

登錄URL Twitter的 - railsroot/auth /中嘰嘰喳喳

在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 

使用自己的範圍訪問權限

0

正如其他答案所說,如果你想使用Facebook的omniauth,那麼簡單地按照米哈伊爾的答案,(你得到消費者密鑰和祕密通過與Facebook註冊)。如果你遵循這種模式,你實際上會通過OAuth2與Facebook進行身份驗證,而不是通過OpenID進行身份驗證。

如果你想與像谷歌,例如OpenID提供使用omniauth,圖案略有不同。例如:

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的需要「存儲」存儲協會和隨機數是那些獲得認證過程中產生進程(在上面的例子中,我們使用的是基於ActiveRecord的OpenID存儲)。通過上述配置轉到以下網址:

${RAILS_ROOT}/auth/google 

應該啓動對谷歌的OpenID身份驗證過程。如果您想使用其他OpenID提供程序進行身份驗證,則需要適當更改:name:identifier字段。