解決したい問題
RailsでTwitter認証でログインするアプリケーションを作成しており、
ローカルの環境ではTwitter認証を実装することができたのですが、
HEROKUにデプロイしたところ、ログインボタンを押すと
**https://xxxx.herokuapp.com/auth/twitter**のURLで
**We're sorry, but something went wrong.**となる問題を解決したいです
heroku logs -tの結果
実際はstatus=500の500が赤色です
2019-11-04T18:09:37.024759+00:00 heroku[router]: at=info method=POST path="/auth/twitter" host=xxxx.herokuapp.com request_id=xxxx fwd="xxxx" dyno=web.1 connect=1ms service=151ms status=500 bytes=1827 protocol=https
これまでに実装したこと
・Callback URLの指定
https://xxxx.herokuapp.com/auth/twitter/callback
http://xxxx.herokuapp.com/auth/twitter/callback
・コード
config/initializers/omniauth.rb
Rails.application.config.middleware.use OmniAuth::Builder do provider :twitter, ENV['TWITTER_CONSUMER_KEY'], ENV['TWITTER_SECRET_KEY'] end
user.rb
class User < ApplicationRecord def self.find_or_create_from_auth(auth) provider = auth[:provider] uid = auth[:uid] nickname = auth[:info][:nickname] name = auth[:info][:name] image_url = auth[:info][:image] description = auth[:info][:description] self.find_or_create_by(provider: provider, uid: uid) do |user| user.nickname = nickname user.name = name user.image_url = image_url user.description = description end end end
sessions_controller.rb
class SessionsController < ApplicationController def create user = User.find_or_create_from_auth(request.env['omniauth.auth']) session[:user_id] = user.id redirect_to root_path end def destroy reset_session redirect_to root_path end end
HomesController
class HomesController < ApplicationController def index if session[:user_id].nil? redirect_to action:'login' else @user = User.find(session[:user_id]) end end def login end end
views/homes/login.html.erb
<%= link_to "login" ,"/auth/twitter", method: :post %>
routes
Rails.application.routes.draw do root 'homes#index' get '/homes', to: 'homes#index' get '/auth/:provider/callback', to: 'sessions#create' get '/logout', to: 'sessions#destroy' get '/login', to: 'homes#login' end
herokuへのデプロイ時に以下のコマンドも実行しています
$ heroku config:set APP_ID=API key
$ heroku config:set APP_SECRET=API secret key
実装の際に参考にした記事
【Ruby on Rails】Twitterログイン機能のつくりかた(gem omniauth-twitter)
[学習用]Rails5+herokuで Twitter認証を実装する:deviseを使ってない場合
ローカルではきちんと認証できログインできるのに本番環境では失敗するのでcallbackのURLや$ heroku config:setあたりが間違えているのかなと思い調べたのですが解決することができず、皆様のお力をお借りしたいです。大変恐縮ですがご教示いただけますと幸いです。 よろしくお願いいたします。
エラーログ スクリーンショット
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/05 07:12
2019/11/05 07:14
2019/11/05 07:18 編集
2019/11/05 08:14
2019/11/05 10:16