1
我试图安装omniauth-twitter并遇到一些问题,主要是上面列出的一个问题。起初,我没有这个问题,但现在我这样做,我挠了脑袋,为什么这件事情出现了。 我已将消费者密钥和密钥放置在secrets.yml文件中,并且也位于我的omniauth.rb文件中,如下所示。我已经阅读了很多关于是否需要该文件的冲突信息,并且所有这些信息都进入了devise.rb文件。我没有更改或在我的devise.rb文件中放置任何对omniauth的引用。我还确保将相应的url回调链接(http://127.0.0.1:3000/auth/twitter/callback)置于twitter开发者网站中。路由错误 - 没有路由匹配[GET]“/ auth/twitter”Omniauth-twitter与devise gem
这里是我的代码 -
的routes.rb
Rails.application.routes.draw do
get "/auth/:provider/callback" => "social_logins#create"
devise_for :users, :controllers => { registrations: 'registrations' }
resources :users
resources :events do
resources :bookings
end
# get 'welcome/index'
authenticated :user do
root 'events#index', as: "authenticated_root"
end
root 'welcome#index'
end
social_logins.controller.rb
class SocialLoginsController < ApplicationController
def create
@details = request.env["omniauth.auth"].to_yaml
@provider = @details["provider"]
@provider_id = @details["uid"]
@user = User.where(provider: @provider, provider_id: @provider_id).first
if @user.present?
#sign them in
else
# make a new user
@user = User.new
@user.provider = @provider
@user.provider_id = @provider_id
# because of has_secure_password - will this work?
@user.password = "AAAAAA!!"
@user.password_confirmation = "AAAAAA!!"
# let's save the key and secret
@user.key = @details["credentials"]["token"]
@user.secret = @details["credentials"]["secret"]
# lets fill in their details
@user.name = @details["info"]["name"]
@user.email = @details["info"]["email"] || "[email protected]"
@user.save!
end
session[:uid] = @user.id
flash[:success] = "You've logged in"
redirect_to root_path
end
end
index.html.erb
<header>
<nav>
<div class="links">
<%= link_to 'Sign up', new_user_registration_path %>
<%= link_to 'Sign in', new_user_session_path %>
<%= link_to 'Go to Events', events_path %>
<%= link_to "Log in with Twitter", "/auth/twitter" %>
</div>
</nav>
</header>
omniauth.rb
Rails.application.config.middleware.use OmniAuth::Builder do
provider :twitter, Rails.application.secrets.twitter_api_key, Rails.application.secrets.twitter_api_secret
end
请为'rake routes | grep auth'提供输出 –