実現したいこと
ここに実現したいことを箇条書きで書いてください。
- 本番環境でもTwitterログインができるようにしたい
前提
Rails6系で、Twitterログイン機能を実装中ですが、
本番環境になると「We're sorry, but something went wrong.」
とエラー画面になってしまいます。
なお、開発環境では問題なくログインできているためなぜ本番環境のみエラーになるのかが分からない状態です。
発生している問題・エラーメッセージ
heroku.logs
12023-04-17T14:05:06.363818+00:00 app[web.1]: I, [2023-04-17T14:05:06.363757 #2] INFO -- : [95d9019e-b882-4126-a7af-5da54f737b56] Started GET "/oauth/twitter" for 58.85.224.15 at 2023-04-17 14:05:06 +0000 22023-04-17T14:05:06.364520+00:00 app[web.1]: I, [2023-04-17T14:05:06.364480 #2] INFO -- : [95d9019e-b882-4126-a7af-5da54f737b56] Processing by OauthsController#oauth as HTML 32023-04-17T14:05:06.364542+00:00 app[web.1]: I, [2023-04-17T14:05:06.364526 #2] INFO -- : [95d9019e-b882-4126-a7af-5da54f737b56] Parameters: {"provider"=>"twitter"} 42023-04-17T14:05:06.483043+00:00 app[web.1]: I, [2023-04-17T14:05:06.482980 #2] INFO -- : [95d9019e-b882-4126-a7af-5da54f737b56] Completed 500 Internal Server Error in 118ms (ActiveRecord: 0.0ms | Allocations: 4755) 52023-04-17T14:05:06.483462+00:00 app[web.1]: F, [2023-04-17T14:05:06.483428 #2] FATAL -- : [95d9019e-b882-4126-a7af-5da54f737b56] 62023-04-17T14:05:06.483463+00:00 app[web.1]: [95d9019e-b882-4126-a7af-5da54f737b56] OAuth::Unauthorized (401 Unauthorized): 72023-04-17T14:05:06.483464+00:00 app[web.1]: [95d9019e-b882-4126-a7af-5da54f737b56] 82023-04-17T14:05:06.483464+00:00 app[web.1]: [95d9019e-b882-4126-a7af-5da54f737b56] app/controllers/oauths_controller.rb:9:in `oauth' 92023-04-17T14:05:06.489159+00:00 heroku[router]: at=info method=GET path="/oauth/twitter" host=www.○○○○○○○○○○○○request_id=95d9019e-b882-4126-a7af-5da54f737b56 fwd="58.85.224.15" dyno=web.1 connect=0ms service=128ms status=500 bytes=1891 protocol=https
該当のソースコード
oauths_conttoller.rb
1class OauthsController < ApplicationController 2 skip_before_action :require_login 3 4 def oauth 5 login_at(auth_params[:provider]) 6 end 7 8 def callback 9 provider = auth_params[:provider] 10 #binding.pry 11 if auth_params[:denied].present? 12 redirect_to posts_path, success: '指定アカウントでログインしました' 13 return 14 end 15 16 begin 17 create_user_from(provider) unless (@user = login_from(provider)) 18 redirect_to posts_path, success: "指定アカウントでログインしました" 19 20 rescue StandardError 21 redirect_to login_path, danger: "指定アカウントでのログインに失敗しました" 22 end 23 end 24 25 private 26 27 def auth_params 28 params.permit(:code, :provider, :denied, :oauth_token, :oauth_verifier) 29 end 30 31 def create_user_from(provider) 32 @user = create_from(provider) 33 reset_session 34 auto_login(@user) 35 end 36 37end 38
development.yml
1sorcery: 2 twitter_callback_url: 'http://127.0.0.1:3000/oauth/callback?provider=twitter'
production.yml
1sorcery: 2 twitter_callback_url: 'https://www.○○○○○○○○○○○○○/oauth/callback?provider=twitter'
schema.rb
1create_table "authentications", force: :cascade do |t| 2 t.integer "user_id", null: false 3 t.string "provider", null: false 4 t.string "uid", null: false 5 t.datetime "created_at", precision: 6, null: false 6 t.datetime "updated_at", precision: 6, null: false 7 t.index ["provider", "uid", "user_id"], name: "index_authentications_on_provider_and_uid_and_user_id" 8 end
sorcery.rb
1config.twitter.key = ENV['TWITTER_API_KEY'] 2 config.twitter.secret = ENV['TWITTER_API_KEY_SECRET'] 3 config.twitter.callback_url = Settings.sorcery[:twitter_callback_url] 4 config.twitter.user_info_path = "/1.1/account/verify_credentials.json?include_email=true" 5 config.twitter.user_info_mapping = { 6 email: 'email', 7 name: 'name', 8 introduction: 'description' 9 }
user.rb
1class User < ApplicationRecord 2 authenticates_with_sorcery! 3 has_many :authentications, dependent: :destroy 4 accepts_nested_attributes_for :authentications 5 以下省略
authentication.rb
1class Authentication < ApplicationRecord 2 belongs_to :user 3end
routes.rb
1 post "oauth/callback", to: "oauths#callback" 2 get "oauth/callback", to: "oauths#callback" 3 get "oauth/:provider", to: "oauths#oauth", as: :auth_at_provider
env.
1TWITTER_API_KEY='◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯' 2TWITTER_API_KEY_SECRET='◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯'
試したこと
https://qiita.com/zakirun/items/da012e6d8f7282c3c912
https://blog.aiandrox.com/posts/tech/2020/03/29/
https://teratail.com/questions/240614?link=qa_related_sp
上記のサイトを参考にしたところ、
Twitter Developer PortalのリダイレクトURLの設定が関係しているとの内容をよく見かけたため、色々と変更してみましたがエラーが解消されない状況でございます。
補足情報(FW/ツールのバージョンなど)
Rails 6.1.7
Ruby 3.1.3

あなたの回答
tips
プレビュー