加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 用于Ruby的Warden Devise Authentication Gems

发布时间:2020-12-17 03:09:14 所属栏目:百科 来源:网络整理
导读:Devise,基于Warden(另一个auth gem)的 Ruby的身份验证gem不支持Twitter Oauth作为身份验证策略,但Warden确实如此.有一种方法可以在Devise中使用Warden Twitter Oauth策略,但我无法弄清楚.我在设计配置文件中使用以下块: config.warden do |manager| manager
Devise,基于Warden(另一个auth gem)的 Ruby的身份验证gem不支持Twitter Oauth作为身份验证策略,但Warden确实如此.有一种方法可以在Devise中使用Warden Twitter Oauth策略,但我无法弄清楚.我在设计配置文件中使用以下块:

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用户模型添加属性等),但我无法弄清楚它们是什么.请帮忙.

解决方法

# 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') ) %>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读