class User < ApplicationRecord
authenticates_with_sorcery!
googleログインの設定
has_many :authentications, :dependent => :destroy
accepts_nested_attributes_for :authentications
end
- app/models/authentication.rb
class Authentication < ApplicationRecord
belongs_to :user
end
### ルーティングの設定(抜粋)
- config/routes.rb
Rails.application.routes.draw do
googleログイン
post "oauth/callback" => "oauths#callback"
get "oauth/callback" => "oauths#callback"
get "oauth/:provider" => "oauths#oauth", as: :auth_at_provider
end
config.user_config do |user|
user.stretches = 1 if Rails.env.test?
user.authentications_class = Authentication
end
config.user_class = "User"
end
### Google側の認証情報の設定
[![Image from Gyazo](https://i.gyazo.com/fb0e7611df46c14c6e0483b4fdf77f9a.png)](https://gyazo.com/fb0e7611df46c14c6e0483b4fdf77f9a)
sorceryによるgoogleログインで発生しているエラーの共有です。
このプルリクでは変更していませんが、実装内容に関連するコードは以下のとおりです。
また、当初実装していたプルリクはこちらです。
URLの設定
sorcery: google_callback_url: "http://localhost:3000/oauth/callback?provider=google"
class User < ApplicationRecord authenticates_with_sorcery!
googleログインの設定
has_many :authentications, :dependent => :destroy accepts_nested_attributes_for :authentications end
class Authentication < ApplicationRecord belongs_to :user end
Rails.application.routes.draw do
googleログイン
post "oauth/callback" => "oauths#callback" get "oauth/callback" => "oauths#callback" get "oauth/:provider" => "oauths#oauth", as: :auth_at_provider end
Rails.application.config.sorcery.submodules = [:external]
Rails.application.config.sorcery.configure do |config|
config.external_providers = %i[google]
config.google.key = Rails.application.credentials.dig(:google, :google_client_id) config.google.secret = Rails.application.credentials.dig(:google, :google_client_secret) config.google.callback_url = Settings.sorcery[:google_callback_url] config.google.user_info_mapping = {:email => "email", :username => "name"}
config.user_config do |user| user.stretches = 1 if Rails.env.test? user.authentications_class = Authentication end
config.user_class = "User" end