Ich versuche Omniath-Twitter zu installieren und einige Probleme zu begegnen, hauptsächlich mit der oben beschriebenen. Anfangs hatte ich dieses Problem nicht, aber jetzt mache ich es und kratze mich am Kopf, warum das passiert ist. Ich habe den Consumer-Schlüssel und den geheimen Schlüssel in die Datei secrets.yml und auch in meine omniauth.rb-Datei kopiert, wie unten beschrieben. Ich habe eine Menge widersprüchlicher Informationen darüber gelesen, ob diese Datei benötigt wird und all diese Informationen in die Datei devise.rb einfließen. Ich habe in meiner Datei devise.rb keine Änderung oder einen Verweis auf Omniauth gemacht. Ich habe auch sichergestellt, dass die entsprechende URL Callback-Link (http://127.0.0.1:3000/auth/twitter/callback) in der Twitter-Entwickler-Website platziert wurde.Routing Error - Keine Route stimmt überein [GET] "/ auth/twitter" Omniahth-Twitter mit Devise Gem
Hier ist mein Code -
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
bitte Ausgabe für 'Rake-Routen | grep auth' bereitstellen –