在omniauth中命名的Rails路由

2024-04-14

我在routes.rb中有这个:

namespace :api do
  namespace :v1 do
    ...
    devise_for :users, constraints: { format: :json },
      :controllers => { :omniauth_callbacks => "auths" }
    ...
  end
end

并产生以下路线:

new_api_v1_user_confirmation GET        /api/v1/users/confirmation/new(.:format)          api/v1/confirmations#new {:format=>:json}
                             GET        /api/v1/users/confirmation(.:format)              api/v1/confirmations#show {:format=>:json}
api_v1_user_omniauth_authorize            /users/auth/:provider(.:format)                   auths#passthru {:provider=>/facebook|twitter|linkedin/, :format=>:json}
api_v1_user_omniauth_callback            /users/auth/:action/callback(.:format)            auths#(?-mix:facebook|twitter|linkedin) {:format=>:json}

如何获得最后两条命名空间的路由,例如:

/api/v1/auth/:provider(.:format)
/api/v1/auth/:provider/callback(.:format)

我想我应该将我的评论转换为答案:

对于我们的应用程序,我们正在使用主干/木偶来做纯 json api 的事情。为了让 oAuth 与 devise 一起使用 - 我将其从 devise 中删除了。 :) 删除了我设置的omniauthable 属性,并从我的initializers/devise.rb 中删除了omniauth 设置。然后在omniauth页面上阅读我自己实现了它。

我的 api 位于“/api/v1”下

  1. 创建了initializers/omniauth.rb 文件,列出了我的提供程序和密钥。对于每个提供程序,我还给了它一个 :path_prefix=>"/api/v1/auth" 属性。
  2. 在我的 api 中创建一个名为 api/v1/oauth_controller.rb 的回调控制器,该控制器已使用模块正确命名,并包含来自服务的回调路径。
  3. 更新了我的路线以设置全向回调路线。请参阅此处:gist.github.com/DaveSanders/5835642
  4. 在 OAuthController.create 中,我使用了来自提供商的详细信息,并完成了“社交网络用户是否存在并拥有映射帐户?”的基本流程。如果是这样,请通过 devise 的 user.sign_in 登录它们?如果没有,请创建用户然后登录。
  5. 重定向回我的应用程序,然后再次启动主干网,然后可以获取登录的用户详细信息并根据需要使用它们。

您的实现可能会有所不同,但我处理 oAuth 帐户的方式是将它们放入自己的表中(Twitter、Facebook 等),然后将它们链接到我的设备用户。这样我就可以关联多个帐户,并且用户可以使用其中任何一个帐户登录。

另外,请务必将您的 twitter/facebook 回调设置为:

http://127.0.0.1:3000/api/v1/auth/twitter/callback

以匹配您在开发中的路线。

希望这对其他人有帮助。如果我忘记了一个步骤或者你迷路了,请询问。

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

在omniauth中命名的Rails路由 的相关文章

随机推荐

  • android studio 3.4 中的 R.java 文件

    我只是想学习android开发 并且正在使用最新版本的android studio 但是 我找不到R java我的文件夹树视图中的文件 我还清理并重建了我的项目 但我仍然看不到 source R文件夹也不R java file 我也在学习
  • 我的 PHP 应用程序是否正确支持 UTF-8?

    我想确保我所知道的有关 UTF 8 的一切都是正确的 我已经尝试使用 UTF 8 一段时间了 但我不断遇到越来越多的错误和其他奇怪的事情 这使得拥有 100 UTF 8 网站几乎不可能 总有一些地方是我似乎想念的 也许这里有人可以更正我的列
  • 从 A 系列升级到 D 系列 Azure 虚拟机

    我们在 A 系列虚拟机上安装了 SQL Sever 我们想要升级到 D 系列虚拟机 是否只是在 Azure 中升级 VM 并单击 保存 那么简单 或者还有其他我需要注意的事情吗 我听说有人因为虚拟机所在的集群中不可用的级别而遇到升级问题 A
  • 是否有适用于 Nunit 的免费 Visual Studio 插件?

    我很便宜 不想支付 ReSharper 或 TestDriven NET 的费用 是否有适用于 NUnit 的免费 Visual Studio 插件 您可以创建一个空白项目 例如选择控制台应用程序 并在项目的属性中选择 DEBUG 标签并选
  • 如何测试某个地理位置是否在“现实世界”中被访问过?

    好的 所以我已经有了这个问题的答案 但我花了很长时间才找到答案 所以我想我会分享它 特别是因为someone https stackoverflow com users 975457 fusion27问我但在不相关的问题 https sta
  • 在 Maven 测试范围中运行时,如何排除提供的范围中的依赖项?

    在 Maven 测试范围中运行时 如何排除提供的范围中的依赖项 我有一个不寻常的用例 我需要排除特定提供的实现并将其替换为测试用例中的另一个实现 Maven 测试似乎也总是包含其他范围 但就我而言 我想破例 我该怎么做呢 在某些情况下 您需
  • 如何异步等待直到我从数据库收到数据?

    我正在尝试创建可以通过屏幕访问的商店 文件结构 索引 ios js app index js app store database js app store userStore js 索引 ios js import AppRegistry
  • 如何解释无效的 CSS 行?

    我花了大约30分钟调试字体加载 https stackoverflow com q 20900218 1420197页面出现问题 我终于发现我使用了错误的注释 this is a comment font face is this igno
  • 使用 JDBC 获取所有外键

    我正在使用 postgreSQL 我正在尝试从表中获取所有外键 这是我目前正在使用的方法 public String getFKeyData String tableName int i throws SQLException Databa
  • RVM设置ruby默认,当打开新终端时删除RVM设置,返回系统ruby

    我刚买了一台新 MacBook Pro 并尝试在系统中设置 RVM 我安装了RVM并将默认设置为 rvm list default 默认 Ruby 用于新 shell ruby 1 9 3 p194 x86 64 If RVM is在 sh
  • 使用 javascript 对 html 脚本进行小修改,我无法解决[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 这是我的代
  • tkinter python 的全局变量问题

    我正在尝试创建一个简单的界面来访问具有第一个 最后一个 上一个和下一个功能的名称数组 但我用作位置跟踪器的全局变量不起作用 我已经提到过各种问题 非常感谢您的帮助 这是代码 from tkinter import Tk Label Entr
  • Google Maps API v3:地形图的自定义样式

    有谁知道是否可以为地形图创建自定义浮雕样式 显然 您可以为法线贴图创建自定义样式 但我也想更改地形的默认颜色渐变 非常感谢 您确实可以设置地形图的样式 我这里有一个 JSFiddle 演示了这一点 https jsfiddle net w7
  • Eclipse调试时断点错误如何解决?

    需要调试一个JAR文件 ProA 所以在项目中导入源代码 但是在尝试设置断点时 Eclipse 出现一个奇怪的错误 详情如下 Unable to install breakpoint due to missing line number a
  • 为什么 jQuery 1.9+ attr() 方法没有被弃用?

    作为一名 jQuery1 9 软件开发人员 我可以 弃用 使用attr 我日常工作中的方法 正如许多问题所表明的那样 prop 与 attr https stackoverflow com questions 5874652 prop vs
  • jQuery - 在函数之间共享变量

    这应该相当简单 我很确定我只是不明白 仅供参考 该网站使用 jQuery 在内容上运行 ajax load 在我的主父页面上 在标题中我有我的 nav load jQuery 代码
  • 如何从 cpp 文件修改 VS_VERSION_INFO

    当我去资源视图 gt myproject rc gt 版本 gt VS VERSION INFO我有可以更改的字段 可以通过cpp文件更改这些字段吗 所以我可以使用类似的东西 define FileDescription This is m
  • 在猫鼬中指定模式

    我想知道定义此模式的最佳方法是什么 Newsitem 只能有 1 个用户 ID 和 1 个任务 ID 一个任务可以属于多个新闻站点 一个用户可以属于多个新闻站点 我搜索过例子 但我想说的例子并不多 我怎样才能用 mongoose 和 mon
  • Node.js 中的 Json 到 csv

    我正在尝试在 node js 中将非常大的 json 转换为 csv 但它花费了太多时间 并且在转换时导致 100 cpu 占用 jsonToCsv function data var keys Object keys data 0 var
  • 在omniauth中命名的Rails路由

    我在routes rb中有这个 namespace api do namespace v1 do devise for users constraints format json controllers gt omniauth callba