オリジナルアプリにTwitterでのログイン機能を実装しようと下の記事を参考にしてみたのですが、Routing Errorが出てしまい上手く実装できません
https://kurose.me/twitter-omniauth/#Gem
発生している問題・エラーメッセージ
Routing Error No route matches [GET] "/auth/twitter"
ルーツが間違っている(/auth/twitterがない)というエラーなのだと思いますが、下記にある通りルートはしっかり設定できているかと思います
該当のソースコード
**controllers/users_controller.rb** def creates user = User.find_by(id: current_user.id) t_user = user.find_or_create_from_auth(request.env['omniauth.auth'], user.id) session[:user_id] = t_user.uid redirect_to root_path end def destroies session[:user_id] = nil redirect_to root_path end
**routes.rb** get '/auth/twitter/callback', to: 'users#creates' get '/logout', to: 'users#destroies'
ぼくが問題はルートやコントローラーにあると勘違いしているだけで別の部分に問題がある可能性もありますので、参考にした記事を基に書いたコードも以下に掲載しておきます
**model/user.rb** def find_or_create_from_auth(auth,id) user = User.find(id) provider = auth[:provider] uid = auth[:uid] nickname = auth[:info][:nickname] name = auth[:info][:name] image_url = auth[:info][:image] description = auth[:info][:description] user.update_attributes(id: id, provider: provider, uid: uid, nickname: nickname, name: name, description: description) end
**config/secrets.yml** twitter: &twitter twitter_api_key: <%= ENV["API_KEY"] %> twitter_api_secret: <%= ENV["API_SECRET"] %> development: secret_key_base: <%= ENV["SECRET_KEY_BASE"] %> <<: *twitter test: secret_key_base: <%= ENV["SECRET_KEY_BASE"] %> <<: *twitter production: secret_key_base: <%= ENV["SECRET_KEY_BASE"] %> <<: *twitter
**config/initializers/omniauth.rb** Rails.application.config.middleware.use OmniAuth::Builder do provider :twitter, ENV['At9i5eUDGCWOHtds3yCmQnl8U'], ENV['DAv88lsRRUBwNBWAdPiVKeEYM2QxP6uZHTtjIIk2V50HlwooOO'] end
**posts/index.html.erb** <div class="main-btn2"> <% if session[:user_id]==nil %> <%= link_to "Twitterログイン", "/auth/twitter"%> <% else %> <%= link_to "Twitterログアウト", "/auth/logout"%> <% end %> </div>
どこがおかしいのかお分かりになる方がいらっしゃいましたらアドバイスの方よろしくお願いします
あなたの回答
tips
プレビュー