我正在尝试使用这个railscast集通过twitter提供身份验证http://railscasts.com/episodes/235-omniauth-part-1
我想知道是否可以使用全面授权登录与facebook以及?
另外,我想使用HTML OpenID选择器,但演示没有facebook按钮,他们的常见问题提示他们不支持facebook,然而,SO认证页面确实显示facebook作为按钮之一。SO使用的openid选择器是自定义的?
刚刚添加到您的omniauth。facebook的Rb凭据
Rails.application.config.middleware.use OmniAuth::Builder do
provider :facebook, 'CONSUMER_KEY', 'CONSUMER_SECRET'
end
在你的会话或身份验证动作(你处理twitter登录)添加额外的逻辑为facebook
正如其他答案所说,如果你想在facebook上使用全能,那么只需遵循Mikhail的答案(你通过在facebook上注册获得消费者密钥和秘密)。如果你遵循这个模式,你实际上将通过OAuth2而不是通过OpenID与facebook进行身份验证。
如果你想在OpenID提供商(例如google)上使用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存储)。将上面的配置转到以下url:
${RAILS_ROOT}/auth/google
应该启动针对google的OpenID认证过程。如果希望使用不同的OpenID提供程序进行身份验证,则需要适当地更改:name
和:identifier
字段。
login url for facebook - railsroot/auth/facebook
twitter的登录url - railsroot/auth/twitter
在你的全能。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
使用自己的作用域访问权限