前提・実現したいこと
Rails 6.0.3
Ruby 2.7.1
devise なし
RailsでWebアプリを作成している初心者です。もともとdiviseを使用しない認証機能を作成しており、SNS認証機能を追加しようとしたのですが上手くいきません。
twitterでCallback URLを設定しようとしましたが、ローカルだとInvalidだと言われて登録できません。
本番環境のURLは登録できましたが、/auth/twitter にアクセスすると、404エラーが返ってきます。
また、googleも試してみましたが、/auth/google_oauth2 にローカルでアクセスすると No route matches [GET] "/auth/google_oauth2" とエラーが出ます。
アプリを作成した時点ではrails5系だったのですが、途中でrails6にアップデートしました。その時にどこか上手くいっていない部分があったかもしれません。
該当のソースコード
※実際には<>の部分に入力されています。
env
1GOOGLE_CLIENT_ID="<ID>" 2GOOGLE_CLIENT_SECRET="<SECRET>" 3TWITTER_KEY='<KEY>' 4TWITTER_SECRET='<SECRET>'
lang
1Rails.application.config.middleware.use OmniAuth::Builder do 2 provider :google_oauth2, ENV['GOOGLE_CLIENT_ID'], ENV['GOOGLE_CLIENT_SECRET'] 3 provider :twitter, ENV["TWITTER_KEY"], ENV["TWITTER_SECRET"] 4end
gemfilelock
1oauth (0.5.4) 2 oauth2 (1.4.4) 3 faraday (>= 0.8, < 2.0) 4 jwt (>= 1.0, < 3.0) 5 multi_json (~> 1.3) 6 multi_xml (~> 0.5) 7 rack (>= 1.2, < 3) 8 omniauth (1.9.1) 9 hashie (>= 3.4.6) 10 rack (>= 1.6.2, < 3) 11 omniauth-google-oauth2 (0.8.0) 12 jwt (>= 2.0) 13 omniauth (>= 1.1.1) 14 omniauth-oauth2 (>= 1.6) 15 omniauth-oauth (1.1.0) 16 oauth 17 omniauth (~> 1.0) 18 omniauth-oauth2 (1.6.0) 19 oauth2 (~> 1.1) 20 omniauth (~> 1.9) 21 omniauth-rails_csrf_protection (0.1.2) 22 actionpack (>= 4.2) 23 omniauth (>= 1.3.1) 24 omniauth-twitter (1.4.0) 25 omniauth-oauth (~> 1.1) 26 rack
lang
1 get '/login', to: 'sessions#new' 2 post '/login', to: 'sessions#create' 3 get 'auth/:provider/callback', to: 'sessions#create' 4 get 'auth/failure', to: redirect('/') 5 delete '/logout', to: 'sessions#destroy'
試したこと
本番環境の環境変数は設定しました。
ローカルサーバーの再起動もしました。
twitterやgoogle側の設定はいくつかのサイトを見ながら見直しましたが、問題点が見つかりません。
twitterに関してはUIが変化していたのでミスがあるかもしれません。
新しくrails new して同じコードでhttp://127.0.0.1:3000/auth/google_oauth2に接続してみたところ、無事googleの認証ページにリダイレクトされました。
何が原因でrouteエラーになっているのでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。