身份验证失败:Devise + OmniAuth + Twitter

2023-11-22

我正进入(状态(twitter) Authentication failure! invalid_credentials: OAuth::Unauthorized, 401 Unauthorized成功登录 Twitter 并且页面重定向到登录页面后出现错误

这是应用程序配置

路线.rb

devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" }

设计.rb

config.omniauth :twitter, "KEY", "SECRET"

omn​​iauth_callbacks_controller.rb

class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController  
  def twitter
    auth = env["omniauth.auth"]
    Rails.logger.info("auth is **************** #{auth.to_yaml}")
    @user = user = User.find_by_provider_and_uid(auth["provider"], auth["uid"]) || User.new
    if @user.persisted?
      flash[:notice] = I18n.t "devise.omniauth_callbacks.success"
      sign_in_and_redirect @user, :event => :authentication
    else
      session["devise.twitter_uid"] = auth["uid"]
      redirect_to new_user_registration_url
    end
  end
end

user.rb

class User < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :token_authenticatable, :confirmable,
  # :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable, :omniauthable

  # Setup accessible (or protected) attributes for your model
  attr_accessible :email, :password, :password_confirmation, :remember_me, :provider, :uid
  # attr_accessible :title, :body
end

索引.html.erb

<h3>Home</h3>

<%if user_signed_in? %>
  <div><%="Welcome #{current_user.email}"%></div>

<div><%=link_to "Logout", destroy_user_session_path, method: :delete%></div>

<%else%>
<div><%=link_to "Sign in twitter", user_omniauth_authorize_path(:twitter)%></div>
<%end%>

控制台日志

Started GET "/users/auth/twitter" for 127.0.0.1 at 2012-07-09 18:58:16 +0530
(twitter) Callback phase initiated.
(twitter) Callback phase initiated.
(twitter) Authentication failure! invalid_credentials: OAuth::Unauthorized, 401 Unauthorized

Started GET "/users/auth/twitter/callback?oauth_token=rLCEqgAWPtoIzce475sacKwoqU5baEdz0JnmldXE&oauth_verifier=xYPoz2LZGHQlmz4akoVGkarPtZTebCOmeWzPUqLcPA" for 127.0.0.1 at 2012-07-09 18:58:48 +0530
Processing by Users::OmniauthCallbacksController#failure as HTML
  Parameters: {"oauth_token"=>"rLCEqgAWPtoIzce475sacKwoqU5baEdz0JnmldXE", "oauth_verifier"=>"xYPoz2LZGHQlmz4akoVGkarPtZTebCOmeWzPUqLcPA"}
Redirected to http://localhost:3000/users/sign_in

dev.twitter.com 中的回调 URL早些时候是http://127.0.0.1:3000. From Devise、Omniauth 和 Twitter我把它改为http://127.0.0.1:3000/auth/twitter/callback但仍然出现错误

有人可以帮忙解决这个问题吗?

谢谢, 阿米特·帕特尔


我发现了这个问题。我已经在两个中配置了提供程序devise.rb and omniauth.rb。我只是删除了omniauth.rb,它就开始工作了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

身份验证失败:Devise + OmniAuth + Twitter 的相关文章

随机推荐

  • 检测类型是否是主模板的专业化或用户提供的专业化

    假设我有这个 template
  • Tensorflow 数据集 API 中的过采样功能

    我想问一下目前的数据集API是否允许实现过采样算法 我处理高度不平衡的阶级问题 我认为在数据集解析 即在线生成 过程中对特定类进行过采样会很好 我已经看到了rejection resample函数的实现 但是这会删除样本而不是复制它们 并且
  • Google 应用引擎 JRE 类“黑名单”

    有一个 JRE 类白名单 对于 Google 应用程序引擎 我真正想要的是一个 黑名单 换句话说 Java API 不能在 GAE 上运行 这样的列表存在吗 开发人员是否在 GAE 上的 Java API 方面遇到过问题 他们似乎更多地采取
  • 使 SimpleDateFormat.parse() 在无效日期上失败(例如月份大于 12)

    我在用着java text SimpleDateFormat解析以下形式的字符串 yyyyMMdd 如果我尝试解析月份大于 12 的字符串 它不会失败 而是会滚动到下一年 完整的可运行重现 import java text ParseExc
  • 颜色的十六进制透明度[重复]

    这个问题在这里已经有答案了 我正在努力为我的应用程序小部件实现小部件透明度选项 尽管我在获取正确的十六进制颜色值时遇到了一些麻烦 作为十六进制颜色透明度的新手 我进行了一些搜索 尽管我找不到我的问题的具体答案 我想通过十六进制颜色设置透明度
  • 如果 Maven 中的传递依赖项来自我父级的其他子模块,我是否应该依赖它们?

    假设我们正在研究mortgage子模块 我们直接使用Google Guava模块代码中的类 但依赖项guava在同一父模块下的其他子模块中定义 我们只能通过对 investment 模块的传递依赖来访问 Guava 类 banking sy
  • UIScrollView 上的边界会随着内容插入而自动更改

    我使用 UIScrollView 作为我的分页滚动视图 pagesScrollView 在其中 我放置了专门用于缩放的单独的 UIScrollView 在每个视图中 我都有一个视图 该视图是应该可缩放的页面项目 所有这些都位于带有半透明导航
  • System.DirectoryServices 很慢?

    当用户登录网站时 我使用下面的代码在活动目录中查找信息 针对本地域运行速度非常快 但通过 VPN 运行到远程受信任域时 速度非常慢 大约需要 7 或 8 秒 从同一个机器到远程域运行 dsa msc 几乎与在本地运行它一样快 我正在使用属性
  • JavaScript 有类吗?

    上周我和一个朋友发生了争执 他说 JavaScript 中不存在类这样的东西 我说有你可以说的var object new Object 他说 因为没有文字class用过的 这不是一个班级 谁是对的 编辑 2017 年 7 月 ECMASc
  • 向 TList 和 TStringList 添加稳定排序的简单方法

    我将 TList TObjectList 和 TStringList 带有关联对象 用于多种任务 或者按原样使用 或者作为更复杂结构的基础 虽然排序功能通常足够好 但有时我需要做一个stable排序 两个列表都使用快速排序 为 TList
  • 添加 cache.manifest 后,AngularJS/PouchDB 应用程序停止同步到 CouchDB

    我有一个使用 AngularJS 编写的单页 Web 应用程序 它使用 PouchDB 复制到 CouchDB 服务器并且工作正常 当我尝试通过添加cache manifest 将网页转换为可离线使用时 问题就出现了 突然间 所有复制任务都
  • 对 CouchDB 视图中的日期进行排序

    我有一个嵌套的 JSON 对象作为键status below 2011 01 19 09 41 00 AM Prototyping status application 2011 01 20 09 41 00 AM Playing with
  • 如何按字母数字对数字进行排序

    Input SHC 111U SHB 22x SHA 5555G 所需输出 SHB 22X SHC 111U SHA 5555G 我只需要排序Vehicle no在停车场内没有前缀和后缀字母 出色的 优化良好的开源解决方案 位于http d
  • 在 Visual Studio Code 中以编程方式检测亮/暗主题

    我正在开发 Visual Studio Code扩大可以预览mermaid图表 该扩展使用默认样式表 如果使用浅色主题 该样式表可以正常工作 但是 如果用户已将 Visual Studio Code 切换为使用深色主题 则样式表中的一些规则
  • 使用 JavaScript 访问 iPhone 指南针

    知道是否可以使用 JavaScript 在 Safari 中访问 iPhone 指南针 我懂了如何访问 GPS 但我认不出指南针 On iOS 您可以检索compass像这样的值 window addEventListener device
  • 遍历目录树的方式有哪几种?

    如何用您最喜欢的语言遍历目录树 要在不同操作系统中遍历目录树 您需要了解什么 在不同的文件系统上 您最喜欢的帮助遍历目录树的库 模块是什么 In Python 如果您正在寻找快速 干净且便携的解决方案 请尝试 import os base
  • 将created_at和updated_at字段添加到mongoose模式

    有没有办法添加created at和updated at字段到猫鼬模式 而不必每次都将它们传递给新的MyModel 叫做 The created at字段将是一个日期 并且仅在创建文档时添加 这updated at字段将在任何时候更新为新日
  • 爪哇。比较字符串时忽略重音符号

    问题很简单 JAVA中有没有函数可以比较两个字符串并返回true 忽略重音字符 ie String x Joao String y Jo o 返回相等的 Thanks 我认为你应该使用Collator班级 它允许您设置强度和区域设置 并且它
  • 绝对/相对定位布局溢出

    在相当长的一段时间里 我一直在摆弄一个特定的布局问题 但我显然采用了错误的方式 以下是该方法的基本组成部分 div class stretched div class header SOME HEADER div div class som
  • 身份验证失败:Devise + OmniAuth + Twitter

    我正进入 状态 twitter Authentication failure invalid credentials OAuth Unauthorized 401 Unauthorized成功登录 Twitter 并且页面重定向到登录页面后