google sns認証機能をつけました。
ローカル環境問題なく動きました、しかしheroku push後は上手く動かないです。
heroku push後 エラー画面
https://i.gyazo.com/dc0b920c2a4b0edf3ecc4442b98658b5.png
エラー 401: invalid_client
The OAuth client was not found.
とエラーが出てしまいます。
Gemfile
1 2gem 'devise' 3gem 'pry-rails' 4gem 'mini_magick' 5gem 'image_processing', '~> 1.2' 6gem 'omniauth','~> 1.0.0' 7gem 'omniauth-google-oauth2' 8gem 'dotenv-rails' 9gem 'devise_token_auth' 10gem 'dotenv-rails'
devise.rb config.omniauth :google_oauth2, ENV['GOOGLE_CLIENT_ID'], ENV['GOOGLE_CLIENT_SECRET'], skip_jwt: true config.secret_key = ENV['SECRET_KEY_BASE']
User.rb class User < ApplicationRecord devise :omniauthable, :database_authenticatable, :registerable, :recoverable, :rememberable, :validatable has_many :sns_credentials, dependent: :destroy has_many :tweets has_many :comments with_options presence: true do validates :name end validates :password, length: { minimum: 6 },confirmation: true,format: { with: /\A(?=.*?[a-z])(?=.*?[\d])\w{6,12}\z/ } def self.without_sns_data(auth) user = User.where(email: auth.info.email).first if user.present? sns = SnsCredential.create( uid: auth.uid, provider: auth.provider, user_id: user.id ) else user = User.new( name: auth.info.name, email: auth.info.email, ) sns = SnsCredential.new( uid: auth.uid, provider: auth.provider ) end return { user: user ,sns: sns} end def self.with_sns_data(auth, snscredential) user = User.where(id: snscredential.user_id).first unless user.present? user = User.new( name: auth.info.name, email: auth.info.email, ) end return {user: user} end def self.find_oauth(auth) uid = auth.uid provider = auth.provider snscredential = SnsCredential.where(uid: uid, provider: provider).first if snscredential.present? user = with_sns_data(auth, snscredential)[:user] sns = snscredential else user = without_sns_data(auth)[:user] sns = without_sns_data(auth)[:sns] end return { user: user ,sns: sns} end end
上記を.envに apiで取得したGOOGLE_CLIENT_ID、GOOGLE_CLIENT_SECRET、環境変数で定義したSECRET_KEY_BASEを記述しています。
そしてgitignoreにてgithubに上がらない様に明記しています。
herokuにて別途
GOOGLE_CLIENT_ID GOOGLE_CLIENT_SECRET は定義してありますがそれでも上手く行きません。
承認済みのリダイレクト URI
http://localhost:3000/users/auth/google_oauth2/callback
https://blog-app-32422.herokuapp.com/users/auth/google_oauth2/callback
ローカルとheroku push両方記述しています。
初めてgoogle apiをつけたので分からない事だらけです。
よろしければご教授願いたいです。
あなたの回答
tips
プレビュー