2011-08-04 82 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字段。