首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Warden + Devise Authentication Gems for Ruby的Twitter Oauth策略

使用Warden + Devise Authentication Gems for Ruby的Twitter Oauth策略
EN

Stack Overflow用户
提问于 2010-05-20 03:12:12
回答 4查看 4.7K关注 0票数 4

Devise,基于Warden的Ruby身份验证gem (另一个身份验证gem)不支持Twitter Oauth作为身份验证策略,但Warden支持。有一种方法可以在Devise中使用Warden Twitter Oauth策略,但我想不出来。我在devise配置文件中使用了以下代码块:

代码语言:javascript
复制
  config.warden do |manager|
       manager.oauth(:twitter) do |twitter|
          twitter.consumer_secret = <SECRET>
          twitter.consumer_key  = <KEY>
          twitter.options :site => 'http://twitter.com'
       end
       manager.default_strategies.unshift :twitter_oauth
  end

但是我一直收到各种各样的错误信息。有没有人知道怎么做?我假设这里还有更多的事情要做(配置一个新的链接/路由来与Warden对话,也许可以向Devise用户模型添加属性,等等),但是我不知道它们是什么。请帮帮忙。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-08-08 04:11:51

代码语言:javascript
复制
# Needed gems. Add to your Gemfile if you are using Rails3.  
gem 'devise'
gem 'warden_oauth'

#models/user.rb
devise :token_authenticatable, :oauthable # <-- Must have these

#/config/initializers/devise.rb
require 'warden_oauth'
config.warden do |manager|
  manager.oauth(:twitter) do |twitter|
    twitter.consumer_secret = '<SECRET>'
    twitter.consumer_key  = '<CONSUMER KEY>'
    twitter.options :site => 'http://twitter.com'
  end
  manager.default_strategies(:scope => :user).unshift :twitter_oauth
end

Warden::OAuth.access_token_user_finder(:twitter) do |access_token|
  User.find_or_create_by(:token => access_token.token, :secret => access_token.secret).tap do |user|
    #... 
  end
end

# Link to "Login With Twitter" somewhere in your view
<%= link_to( "Login With Twitter", user_session_path(:warden_oauth_provider => 'twitter') ) %>
票数 4
EN

Stack Overflow用户

发布于 2010-12-02 04:09:24

Omniauth让这一切变得很容易。有一个关于在Devise (part 1part 2)中使用Omniauth的铁路广播。

票数 3
EN

Stack Overflow用户

发布于 2010-10-02 00:28:16

这个解决方案确实有效。您只需确保在指定:warden_oauth_provider => 'twitter‘时调用的是受保护的操作,否则Rails将直接忽略它。

要使用上面的示例,请将链接更改为:

代码语言:javascript
复制
<%= link_to( "Login With Twitter", user_session_path(:warden_oauth_provider => 'twitter'), :method => :post ) %>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2868609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档