ruby-on-rails - 没有路线匹配 [GET] "/auth/twitter" OmniA
问题描述
我没有使用设计或其他类似的宝石。我对 RoR 很陌生。
这是我的路线.rb
# For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html
Rails.application.routes.draw do
get "about", to: "about#index"
get "password", to: "passwords#edit", as: :edit_password
patch "password", to: "passwords#update"
get "password/reset", to: "password_resets#new"
post "password/reset", to: "password_resets#create"
get "password/reset/edit", to: "password_resets#edit"
patch "password/reset/edit", to: "password_resets#update"
get '/auth/:provider/callback', to: 'sessions#create'
get "sign_up", to: "registrations#new"
post "sign_up", to: "registrations#create"
get "sign_in", to: "sessions#new"
post "sign_in", to: "sessions#create"
delete "logout", to: "sessions#destroy"
root to: "main#index"
end
这是user.rb
# email:string
# password_digest:string
#
# password:string virtual
# password_confirmation:string virtual
class User < ApplicationRecord
has_secure_password
validates :email, presence: true, format: { with: /\A[^@\s]+@[^@\s]+\z/, message: "must be a valid email address" }
end
这是我的omniauth.rb
Rails.application.config.middleware.use OmniAuth::Builder do
provider :twitter,Rails.application.credentials.dig(:twitter,:api_key), Rails.application.credentials.dig(:twitter,:api_key)
end
我已经在我的 Twitter 应用程序中进行了所有设置。请帮忙。
解决方案
我是 Ruby on Rails for Beginners 课程的作者。我已经更新了视频以反映这些变化。
Omniauth 2.0 已发布,要求您现在使用 POST 请求以确保安全。
现在我们将添加两个宝石:
bundle add omniauth-twitter omniauth-rails_csrf_protection
并确保您api_secret
的 omniauth.rb 初始化程序中的第二个参数是:
Rails.application.config.middleware.use OmniAuth::Builder do
provider :twitter,Rails.application.credentials.dig(:twitter,:api_key), Rails.application.credentials.dig(:twitter,:api_secret)
end
method: :post
然后您可以通过添加到您的link_to
或重定向到 twitterbutton_to
link_to "Connect Twitter", "/auth/twitter", method: :post, class: "btn btn-primary"
button_to "Connect Twitter", "/auth/twitter", method: :post, class: "btn btn-primary"
这适用于 Project 和 Standalone Twitter 应用程序,因此您可以使用其中任何一个。
推荐阅读
- post - 根据 POST 参数 App Script 更新 Cell
- python - 使用 python 条件查找 NEXT Day
- javascript - react js - 关键与组件应该更新
- c++ - lib-mingw 和 lib-vc2019 有什么区别
- android - 无法更改颤动中默认启动屏幕图标的大小
- machine-learning - 使用 scikit-learn 的简单分类不起作用
- python - 如何使用signal.signal?
- c# - 如何在图形面板上添加在数字数组中声明的点
- pine-script - 是否可以使用 line.new() 函数绘制水平线
- compiler-construction - 将我自己的编程语言翻译成另一种语言并编译它是一种好习惯吗?