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

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

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

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

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

1098閲覧

railsでのTwitter認証ができない

sawasawanosawa

総合スコア4

Ruby

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

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2021/06/03 18:46

編集2021/06/04 04:45

###やりたいこと
https://~/auth/twitter と入力するとRouting Errorが出てしまう。

Routing Error No route matches [GET] "/auth/twitter" Rails.root: /home/ec2-user/environment/gamesnap

TwitterAPIを利用して、Twitterアカウントでログインする機能を追加したい。
###環境
ruby :2.6.3
ruby on rails :5.0.7.2
omniauth :2.0.4
omniauth-twitter :1.4.0
dotenv-rails :2.7.6
rack_session_access :0.2.0
cloud9
###コード
routes.rb

Rails.application.routes.draw do get 'posts/index' => "posts#index" get 'posts/new' => "posts#new" get '/auth/twitter/callback' => 'sessions#create' get '/logout' => 'sessions#destroy' post "posts/create" => "posts#create" post "posts/:id/destroy" => "posts#destroy" get "posts/like" => "posts#like" get '/' => "posts#index" root 'posts#index' #get "posts/:id" => "posts#index" # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html end

###行ったこと
以下のgemを入れ、インストールした。

gem 'dotenv-rails' gem 'omniauth-twitter' gem 'rack_session_access' gem 'omniauth'

config/initializers/omniauth.rbに

Rails.application.config.middleware.use OmniAuth::Builder do provider :twitter, "API_KEY", "API_SECRET" end

を入力した。(API_KEYとAPI_SECRETには、それぞれ発行されたキーを入力済み、developer portalにてcallback urlsとwebsite urlを入力済み、callback urlsには2つのurlを入力。)

その後、https://~/auth/twitterと入力したところ、エラーが発生。

私の認識として、
/auth/twitter

Twitter認識画面

/auth/twitter/callback
となり、callbackの部分でエラーが起こる(まだ、どう動かすのか書いていないため)と思っていたのですが、認証画面に行く前にエラーが出てしまいました。(実装方法が載っているいくつかの記事で認証画面にまではいけると書かれてありました。)
どこが間違っているのでしょうか。

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

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

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

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

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

winterboum

2021/06/03 21:44

config/routes を載せてください
guest

回答1

0

ベストアンサー

get '/auth/twitter/callback'はありますが
get '/auth/twitter' はないですね。

投稿2021/06/04 04:53

winterboum

総合スコア23401

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

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

sawasawanosawa

2021/06/04 05:59

callbackしてからとログアウトするときにコントローラで処理することはわかっているのですが、get "/auth/twitter"も必要なのでしょうか。 http://…/auth/twiiterという風に検索すると勝手に認証画面へ飛べると思っておりました。 routes.rbで「get "/auth/twitter" => "session#~" 」などと書き、コントローラで「def ~ … end」という風に何かを書くようなことは、私が調べた限りでは見つけられませんでした。コントローラに何を書けばよいのかに関しての情報が載ってあるサイト、書籍等ございましたら教えていただけると幸いです。
winterboum

2021/06/04 08:39

私はTwitterと遊んだことがまだ無いので、詳細はわかりません。 /auth/twitter というURLでのアクセスが必要なら、get '/auth/twitter' の設定は必要です。 飛びたい認証画面とは あなたのつくったシステムの認証画面ですか? それともTwitterの? もし後者なら https://ドメイン名 からのURLが必要です。
sawasawanosawa

2021/06/04 14:07

開発環境では、認証画面に飛べないんですね。 ドメインを取得してからもう一度試そうと思います。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問