質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Google API

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

Q&A

解決済

1回答

787閲覧

rails6でsns認証出来ない

mika_yamano

総合スコア3

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Google API

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

0グッド

0クリップ

投稿2021/02/10 16:42

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のフラッシュには「メールアドレスの本人確認が必要」
と出ます…

もうどうしたらいいかわからないので助けてくれると嬉しいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

すみませんDockerを再起動したら直りました…

投稿2021/02/10 16:48

mika_yamano

総合スコア3

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問