質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

0回答

616閲覧

[Ruby]アプリのTwitter認証がうまくできません

akairen

総合スコア18

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

1グッド

1クリップ

投稿2020/02/22 10:43

編集2020/02/23 13:45

オリジナルアプリに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>

どこがおかしいのかお分かりになる方がいらっしゃいましたらアドバイスの方よろしくお願いします

DrqYuto👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hatsu

2020/02/22 12:38

**controllers/posts_controller.rb** と書かれていますが、users_controller.rbではないですか?念のため、確認です。
akairen

2020/02/23 13:44

すいません、user_controoller.rbで上手くいかずpost_controller.rbで試してそのままコピペしてしまいました posts_controller.rbの部分はusers_contoroller.rbです 上記コードも修正しておきました ご迷惑をおかけしました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問