https://qiita.com/akioneway94/items/35641ad30c2acb23b562を参考にgoogle認証を実装させたいのですが、上手く行きません。
数々のエラーを経て、なんとかリンクを押すとgoogleのアカウント選択画面を表示させる所までこぎつけたのですが、肝心の認証が出来ず、存在するアカウントであるのにもかかわらずログイン出来ないです。
少し前に記事ですし変わっている所お有るでしょうし、どのあたりがおかしいかご教授いただけると助かります。
gemfile
1gem "devise", git: "https://github.com/heartcombo/devise" 2gem 'dotenv-rails' 3gem 'omniauth-google-oauth2' 4gem 'omniauth-rails_csrf_protection' #追加
route.rb
1route.rb 2 3Rails.application.routes.draw do 4 devise_for :users, controllers: { 5 omniauth_callbacks: "users/omniauth_callbacks" 6 } 7 8 root 'home#index' 9end 10
マイグレーションファイル class AddOmniauthToUsers < ActiveRecord::Migration[6.0] def change add_column :users, :provider, :string add_column :users, :uid, :string end end
user.rb
1user.rb 2 3class User < ApplicationRecord 4 # Include default devise modules. Others available are: 5 # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable 6 devise :database_authenticatable, :registerable, 7 :recoverable, :rememberable, :validatable, 8 :confirmable, 9 :omniauthable, omniauth_providers: %i[google_oauth2] 10 validates :name, presence: true, length: { maximum: 30 } 11 has_many :profile, dependent: :destroy 12 has_many :tool, dependent: :destroy 13 14 def self.from_omniauth(auth) 15 where(provider: auth.provider, uid: auth.uid).first_or_create do |user| 16 user.name = auth.info.name 17 user.email = auth.info.email 18 user.password = Devise.friendly_token[0,20] 19 end 20 end 21end
omniauth_callbacks_controller.rb class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController def google_oauth2 callback_for(:google) end def callback_for(provider) # 先ほどuser.rbで記述したメソッド(from_omniauth)をここで使っています # 'request.env["omniauth.auth"]'この中にgoogoleアカウントから取得したメールアドレスや、名前と言ったデータが含まれています @user = User.from_omniauth(request.env["omniauth.auth"]) sign_in_and_redirect @user, event: :authentication set_flash_message(:notice, :success, kind: "#{provider}".capitalize) if is_navigational_format? end def failure redirect_to root_path end end
home.html.erb <%= link_to 'Signin with Google', user_google_oauth2_omniauth_authorize_path, method: :post %>
railsのフラッシュには「メールアドレスの本人確認が必要」
と出ます…
もうどうしたらいいかわからないので助けてくれると嬉しいです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。