Rails5.1에서 Github 로그인
0. 시작
처음 뵙겠습니다!!
저는 toramaruJP입니다.ω·´)
어제 오리지널 앱을 만들었어요!!
평소에 Qiita씨의 보살핌을 받아 조금이나마 공헌을 하고 싶습니다. 저는 오리지널 응용 프로그램에서 가져온 Github 로그인 실현 방법을 기록하고 싶습니다.
개선점이 있을 때, 지적할 수 있다면 나는 매우 기쁠 것이다.
1. 구현 개요
(1) Github 협업 준비!(Github)
(2) Github 콜라보레이션 준비!(설치)
(3) Devise를 사용하여 Github 로그인!
2. 구현 세부 정보
(1) Github 협업 준비!(Github)
먼저 위 이미지의 오른쪽 위 모서리에 있는 설정 탭을 누릅니다.
그리고 왼쪽 아래에 있는 Developer settings 탭을 누릅니다.
이렇게 하면 위 이미지와 같은 화면이 되므로 오른쪽에 있는'New OAuth 앱'을 누릅니다.
그림과 같이 Local에서 이동할 때
응용 프로그램 이름에는 응용 프로그램 이름이 포함됩니다.
· "Homepage URL"에 "http://localhost:3000/"
・"Authorization callback URL"에 "http://localhost:3000/users/auth/github/callback"
에서 설명한 대로 해당 매개변수의 값을 수정합니다.
마지막으로 "응용 프로그램 등록"단추를 누르면 완성됩니다.
그러면 클라이언트 ID 및 클라이언트 보안이 생성됩니다.
이따가 쓸 거니까 적어두세요.
※'Client ID'와'Client Secret'은 생성된 프로그램 이름을 클릭한 후 자세한 내용에 기재되어 있으므로 여기서 확인할 수 있습니다.
(2) Github 콜라보레이션 준비!(설치)
(a) 응용 프로그램 시작!
개발에 사용된 버전은 다음과 같다.Rails v5.1.6
ruby v2.3.1
다음 명령을 사용하여 현재 버전을 확인할 수 있습니다.$ ruby -v
$ rails -v
rails new 명령을 사용하여 프로그램을 시작합니다.$ rails _5.1.6_ new oauth -d postgresql
다음 명령을 실행하면 "http://localhost:3000/"
사용자 정의 모양새를 정의합니다.$ rails s
(b) OAuth 인증 설치에 필요한 Gem!
Gemfile에 다음 내용을 추가한 다음 "bundle install"을 진행하십시오.
Gemfile省略
gem 'devise'
gem 'omniauth'
gem 'omniauth-github'
省略
$ bundle install
읽기 전용 스토리지
・devise-https://github.com/plataformatec/devise
・omniauth-https://github.com/omniauth/omniauth
・omniauth-github-https://github.com/omniauth/omniauth-github
(c) Devise 설정!
다음 명령을 입력하여devise에 필요한 설정 파일을 만듭니다.$ rails g devise:install
이렇게, 준비됐습니다.
(3) Devise를 사용하여 Github 로그인!
(a) 사용자 테이블 만들기!
$ rails g devise user
다음과 같이 만든 마이그레이션 파일을 편집합니다.class DeviseCreateUsers < ActiveRecord::Migration[5.1]
def change
create_table :users do |t|
## Database authenticatable
t.string :name, null: false, default: ""
t.string :email, null: false, default: ""
t.string :encrypted_password, null: false, default: ""
t.string :provider, null: false, default: ""
t.string :uid, null: false, default: ""
## Recoverable
t.string :reset_password_token
t.datetime :reset_password_sent_at
## Rememberable
t.datetime :remember_created_at
## Trackable
# t.integer :sign_in_count, default: 0, null: false
# t.datetime :current_sign_in_at
# t.datetime :last_sign_in_at
# t.inet :current_sign_in_ip
# t.inet :last_sign_in_ip
## Confirmable
# t.string :confirmation_token
# t.datetime :confirmed_at
# t.datetime :confirmation_sent_at
# t.string :unconfirmed_email # Only if using reconfirmable
## Lockable
# t.integer :failed_attempts, default: 0, null: false # Only if lock strategy is :failed_attempts
# t.string :unlock_token # Only if unlock strategy is :email or :both
# t.datetime :locked_at
t.timestamps null: false
end
add_index :users, :name, unique: true
add_index :users, :email, unique: true
add_index :users, :reset_password_token, unique: true
add_index :users, [:uid, :provider], unique: true
# add_index :users, :confirmation_token, unique: true
# add_index :users, :unlock_token, unique: true
end
end
마이그레이션 파일을 편집할 수 있는 경우
다음 명령을 실행하여 테이블을 만듭니다.$ rails db:migrate
(b) users/registration_컨트롤러를 만들고 devise 컨트롤러를 계승합니다!
다음 명령을 실행합니다.$ rails g controller users::registrations
만든 파일을 편집하려면:.
app/controllers/users/registrations_controllerclass Users::RegistrationsController < Devise::RegistrationsController
def build_resource(hash={})
hash[:uid] = User.create_unique_string
super
end
end
※ 상기 "build_resource(hash={})"방법은 상속 원본을 덮어씁니다.구체적으로 말하면 uid에 무작위 값을 대입합니다.
아래에서 상속원을 확인할 수 있는 이 방법.
https://github.com/plataformatec/devise/blob/bcdd54cc5ebd3413eeb3d17e3b634e8ace0d09f3/app/controllers/devise/registrations_controller.rb
(c) create_unique_string 방법을 만들어라!
다음 파일에 다음 방법을 추가합니다.
app/models/user.rb def self.create_unique_string
SecureRandom.uuid
end
(d) 라우팅 추가!
config/routes.rb devise_for :users, controllers: {
registrations: "users/registrations"
}
(e) 모델 편집!
다음 파일을 편집하려면 다음과 같이 하십시오.
app/models/user.rb devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :validatable,
:omniauthable, omniauth_providers: %i(github)
다음 파일에 다음 방법을 추가합니다.
app/models/user.rb def self.find_for_github_oauth(auth, signed_in_resource=nil)
user = User.find_by(provider: auth.provider, uid: auth.uid)
unless user
user = User.new(provider: auth.provider,
uid: auth.uid,
name: auth.info.name,
email: User.dummy_email(auth),
password: Devise.friendly_token[0, 20]
)
end
user.save
user
end
app/models/user.rb def self.dummy_email(auth)
"#{auth.uid}-#{auth.provider}@example.com"
end
현재의 상응하는 모델은 다음과 같다.
app/models/user.rb devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :validatable,
:omniauthable, :confirmable, omniauth_providers: %i(google facebook github)
def self.create_unique_string
SecureRandom.uuid
end
def self.find_for_github_oauth(auth, signed_in_resource=nil)
user = User.find_by(provider: auth.provider, uid: auth.uid)
unless user
user = User.new(provider: auth.provider,
uid: auth.uid,
name: auth.info.name,
email: User.dummy_email(auth),
password: Devise.friendly_token[0, 20]
)
end
user.save
user
end
def self.dummy_email(auth)
"#{auth.uid}-#{auth.provider}@example.com"
end
(f) github를 통해 받은 OAuth 인증을 읽는 데 필요한 값을 설정합니다("Client ID" 와 "Client Secret")!
다음 파일에 다음 설명을 추가하십시오.
config/initializers/devise.rbDevise.setup do |config|
省略
config.omniauth :github, ENV["GITHUB_ID"], ENV["GITHUB_SECRET"], scope: 'user,public_repo'
省略
end
(g) .env 파일 만들기!
응용 프로그램 디렉터리 바로 아래에 다음 파일을 만들고 다음 설명을 추가하십시오.
.env GITHUB_ID=メモした"Client ID"
GITHUB_SECRET=メモした"Client Secret"
안전을 고려하여github로 전송하지 않기 위해 다음 파일에 다음 설명을 추가하십시오.
.gitignore .env
.env에 기록된 환경 변수를 식별하기 위해 "dotenv"라는 gem를 설치하십시오.
Gemfile gem 'dotenv-rails'
$ bundle install
(h) 로그인 버튼 링크를 설정하는 View 만들기!
터미널에서 다음 명령을 실행합니다. $ rails g controller oauth_test index
생성된 보기 파일에서 로그인 단추 링크를 설정합니다.
app/views/oauth_test/index.html.erb <p><%= notice %><%= alert %></p>
<% if user_signed_in? %>
<%= link_to "ログアウト", destroy_user_session_path, method: :delete %>
<% else %>
<%= link_to 'githubでサインアップしてね', user_github_omniauth_authorize_path %>
<% end %>
라우트를 재설정합니다.
config/routes.rb devise_for :users, controllers: {
registrations: "users/registrations",
omniauth_callbacks: "users/omniauth_callbacks"
}
(i) 리셋 처리 컨트롤러 만들기!
아래의 디렉터리에서 아래의 파일을 작성하여 아래의 내용을 기술하십시오.
app/controllers/users/omniauth_callbacks_controller.rbclass Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
def github
@user = User.find_for_github_oauth(request.env["omniauth.auth"], current_user)
if @user.persisted?
sign_in_and_redirect @user, :event => :authentication
set_flash_message(:notice, :success, :kind => "Github") if is_navigational_format?
else
session["devise.github_data"] = request.env["omniauth.auth"]
redirect_to new_user_registration_url
end
end
end
(j) 리셋 목적지의 루트 선택을 설정합니다!
다음 파일에 다음 설명을 추가합니다.
config/routes.rb root :to => 'oauth_test#index'
(k) 섬광 정보 표시!
다음 파일에 다음 설명을 추가합니다.
app/views/layouts/application.html.erb
省略
<body>
<% if notice %>
<p class="alert alert-notice"><%= notice %></p>
<% end %>
<% if alert %>
<p class="alert alert-error"><%= alert %></p>
<% end %>
<%= yield %>
省略
이상은!!!!!
이러면 "github에 사인"링크를 클릭하면 github 로그인 인증!!!!
하면, 만약, 만약...д)(゜д)
질문 좀 알려주시면 좋을 것 같아요.ω·´)
3. 마지막
처음 쓰는 건데 고생이 많네요.д)
쓰고 정리하는 게 힘들어요.д)
많이 쓴 사람 대단하다.д)
다만, 자신에게도 이롭기 때문에 앞으로도 계속 쓰자!!
끝까지 봐주셔서 감사합니다!!
Reference
이 문제에 관하여(Rails5.1에서 Github 로그인), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/fa19940118/items/e081e99d6a199568810f
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
(1) Github 협업 준비!(Github)
(2) Github 콜라보레이션 준비!(설치)
(3) Devise를 사용하여 Github 로그인!
2. 구현 세부 정보
(1) Github 협업 준비!(Github)
먼저 위 이미지의 오른쪽 위 모서리에 있는 설정 탭을 누릅니다.
그리고 왼쪽 아래에 있는 Developer settings 탭을 누릅니다.
이렇게 하면 위 이미지와 같은 화면이 되므로 오른쪽에 있는'New OAuth 앱'을 누릅니다.
그림과 같이 Local에서 이동할 때
응용 프로그램 이름에는 응용 프로그램 이름이 포함됩니다.
· "Homepage URL"에 "http://localhost:3000/"
・"Authorization callback URL"에 "http://localhost:3000/users/auth/github/callback"
에서 설명한 대로 해당 매개변수의 값을 수정합니다.
마지막으로 "응용 프로그램 등록"단추를 누르면 완성됩니다.
그러면 클라이언트 ID 및 클라이언트 보안이 생성됩니다.
이따가 쓸 거니까 적어두세요.
※'Client ID'와'Client Secret'은 생성된 프로그램 이름을 클릭한 후 자세한 내용에 기재되어 있으므로 여기서 확인할 수 있습니다.
(2) Github 콜라보레이션 준비!(설치)
(a) 응용 프로그램 시작!
개발에 사용된 버전은 다음과 같다.Rails v5.1.6
ruby v2.3.1
다음 명령을 사용하여 현재 버전을 확인할 수 있습니다.$ ruby -v
$ rails -v
rails new 명령을 사용하여 프로그램을 시작합니다.$ rails _5.1.6_ new oauth -d postgresql
다음 명령을 실행하면 "http://localhost:3000/"
사용자 정의 모양새를 정의합니다.$ rails s
(b) OAuth 인증 설치에 필요한 Gem!
Gemfile에 다음 내용을 추가한 다음 "bundle install"을 진행하십시오.
Gemfile省略
gem 'devise'
gem 'omniauth'
gem 'omniauth-github'
省略
$ bundle install
읽기 전용 스토리지
・devise-https://github.com/plataformatec/devise
・omniauth-https://github.com/omniauth/omniauth
・omniauth-github-https://github.com/omniauth/omniauth-github
(c) Devise 설정!
다음 명령을 입력하여devise에 필요한 설정 파일을 만듭니다.$ rails g devise:install
이렇게, 준비됐습니다.
(3) Devise를 사용하여 Github 로그인!
(a) 사용자 테이블 만들기!
$ rails g devise user
다음과 같이 만든 마이그레이션 파일을 편집합니다.class DeviseCreateUsers < ActiveRecord::Migration[5.1]
def change
create_table :users do |t|
## Database authenticatable
t.string :name, null: false, default: ""
t.string :email, null: false, default: ""
t.string :encrypted_password, null: false, default: ""
t.string :provider, null: false, default: ""
t.string :uid, null: false, default: ""
## Recoverable
t.string :reset_password_token
t.datetime :reset_password_sent_at
## Rememberable
t.datetime :remember_created_at
## Trackable
# t.integer :sign_in_count, default: 0, null: false
# t.datetime :current_sign_in_at
# t.datetime :last_sign_in_at
# t.inet :current_sign_in_ip
# t.inet :last_sign_in_ip
## Confirmable
# t.string :confirmation_token
# t.datetime :confirmed_at
# t.datetime :confirmation_sent_at
# t.string :unconfirmed_email # Only if using reconfirmable
## Lockable
# t.integer :failed_attempts, default: 0, null: false # Only if lock strategy is :failed_attempts
# t.string :unlock_token # Only if unlock strategy is :email or :both
# t.datetime :locked_at
t.timestamps null: false
end
add_index :users, :name, unique: true
add_index :users, :email, unique: true
add_index :users, :reset_password_token, unique: true
add_index :users, [:uid, :provider], unique: true
# add_index :users, :confirmation_token, unique: true
# add_index :users, :unlock_token, unique: true
end
end
마이그레이션 파일을 편집할 수 있는 경우
다음 명령을 실행하여 테이블을 만듭니다.$ rails db:migrate
(b) users/registration_컨트롤러를 만들고 devise 컨트롤러를 계승합니다!
다음 명령을 실행합니다.$ rails g controller users::registrations
만든 파일을 편집하려면:.
app/controllers/users/registrations_controllerclass Users::RegistrationsController < Devise::RegistrationsController
def build_resource(hash={})
hash[:uid] = User.create_unique_string
super
end
end
※ 상기 "build_resource(hash={})"방법은 상속 원본을 덮어씁니다.구체적으로 말하면 uid에 무작위 값을 대입합니다.
아래에서 상속원을 확인할 수 있는 이 방법.
https://github.com/plataformatec/devise/blob/bcdd54cc5ebd3413eeb3d17e3b634e8ace0d09f3/app/controllers/devise/registrations_controller.rb
(c) create_unique_string 방법을 만들어라!
다음 파일에 다음 방법을 추가합니다.
app/models/user.rb def self.create_unique_string
SecureRandom.uuid
end
(d) 라우팅 추가!
config/routes.rb devise_for :users, controllers: {
registrations: "users/registrations"
}
(e) 모델 편집!
다음 파일을 편집하려면 다음과 같이 하십시오.
app/models/user.rb devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :validatable,
:omniauthable, omniauth_providers: %i(github)
다음 파일에 다음 방법을 추가합니다.
app/models/user.rb def self.find_for_github_oauth(auth, signed_in_resource=nil)
user = User.find_by(provider: auth.provider, uid: auth.uid)
unless user
user = User.new(provider: auth.provider,
uid: auth.uid,
name: auth.info.name,
email: User.dummy_email(auth),
password: Devise.friendly_token[0, 20]
)
end
user.save
user
end
app/models/user.rb def self.dummy_email(auth)
"#{auth.uid}-#{auth.provider}@example.com"
end
현재의 상응하는 모델은 다음과 같다.
app/models/user.rb devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :validatable,
:omniauthable, :confirmable, omniauth_providers: %i(google facebook github)
def self.create_unique_string
SecureRandom.uuid
end
def self.find_for_github_oauth(auth, signed_in_resource=nil)
user = User.find_by(provider: auth.provider, uid: auth.uid)
unless user
user = User.new(provider: auth.provider,
uid: auth.uid,
name: auth.info.name,
email: User.dummy_email(auth),
password: Devise.friendly_token[0, 20]
)
end
user.save
user
end
def self.dummy_email(auth)
"#{auth.uid}-#{auth.provider}@example.com"
end
(f) github를 통해 받은 OAuth 인증을 읽는 데 필요한 값을 설정합니다("Client ID" 와 "Client Secret")!
다음 파일에 다음 설명을 추가하십시오.
config/initializers/devise.rbDevise.setup do |config|
省略
config.omniauth :github, ENV["GITHUB_ID"], ENV["GITHUB_SECRET"], scope: 'user,public_repo'
省略
end
(g) .env 파일 만들기!
응용 프로그램 디렉터리 바로 아래에 다음 파일을 만들고 다음 설명을 추가하십시오.
.env GITHUB_ID=メモした"Client ID"
GITHUB_SECRET=メモした"Client Secret"
안전을 고려하여github로 전송하지 않기 위해 다음 파일에 다음 설명을 추가하십시오.
.gitignore .env
.env에 기록된 환경 변수를 식별하기 위해 "dotenv"라는 gem를 설치하십시오.
Gemfile gem 'dotenv-rails'
$ bundle install
(h) 로그인 버튼 링크를 설정하는 View 만들기!
터미널에서 다음 명령을 실행합니다. $ rails g controller oauth_test index
생성된 보기 파일에서 로그인 단추 링크를 설정합니다.
app/views/oauth_test/index.html.erb <p><%= notice %><%= alert %></p>
<% if user_signed_in? %>
<%= link_to "ログアウト", destroy_user_session_path, method: :delete %>
<% else %>
<%= link_to 'githubでサインアップしてね', user_github_omniauth_authorize_path %>
<% end %>
라우트를 재설정합니다.
config/routes.rb devise_for :users, controllers: {
registrations: "users/registrations",
omniauth_callbacks: "users/omniauth_callbacks"
}
(i) 리셋 처리 컨트롤러 만들기!
아래의 디렉터리에서 아래의 파일을 작성하여 아래의 내용을 기술하십시오.
app/controllers/users/omniauth_callbacks_controller.rbclass Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
def github
@user = User.find_for_github_oauth(request.env["omniauth.auth"], current_user)
if @user.persisted?
sign_in_and_redirect @user, :event => :authentication
set_flash_message(:notice, :success, :kind => "Github") if is_navigational_format?
else
session["devise.github_data"] = request.env["omniauth.auth"]
redirect_to new_user_registration_url
end
end
end
(j) 리셋 목적지의 루트 선택을 설정합니다!
다음 파일에 다음 설명을 추가합니다.
config/routes.rb root :to => 'oauth_test#index'
(k) 섬광 정보 표시!
다음 파일에 다음 설명을 추가합니다.
app/views/layouts/application.html.erb
省略
<body>
<% if notice %>
<p class="alert alert-notice"><%= notice %></p>
<% end %>
<% if alert %>
<p class="alert alert-error"><%= alert %></p>
<% end %>
<%= yield %>
省略
이상은!!!!!
이러면 "github에 사인"링크를 클릭하면 github 로그인 인증!!!!
하면, 만약, 만약...д)(゜д)
질문 좀 알려주시면 좋을 것 같아요.ω·´)
3. 마지막
처음 쓰는 건데 고생이 많네요.д)
쓰고 정리하는 게 힘들어요.д)
많이 쓴 사람 대단하다.д)
다만, 자신에게도 이롭기 때문에 앞으로도 계속 쓰자!!
끝까지 봐주셔서 감사합니다!!
Reference
이 문제에 관하여(Rails5.1에서 Github 로그인), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/fa19940118/items/e081e99d6a199568810f
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Rails v5.1.6
ruby v2.3.1
$ ruby -v
$ rails -v
$ rails _5.1.6_ new oauth -d postgresql
$ rails s
省略
gem 'devise'
gem 'omniauth'
gem 'omniauth-github'
省略
$ bundle install
$ rails g devise:install
$ rails g devise user
class DeviseCreateUsers < ActiveRecord::Migration[5.1]
def change
create_table :users do |t|
## Database authenticatable
t.string :name, null: false, default: ""
t.string :email, null: false, default: ""
t.string :encrypted_password, null: false, default: ""
t.string :provider, null: false, default: ""
t.string :uid, null: false, default: ""
## Recoverable
t.string :reset_password_token
t.datetime :reset_password_sent_at
## Rememberable
t.datetime :remember_created_at
## Trackable
# t.integer :sign_in_count, default: 0, null: false
# t.datetime :current_sign_in_at
# t.datetime :last_sign_in_at
# t.inet :current_sign_in_ip
# t.inet :last_sign_in_ip
## Confirmable
# t.string :confirmation_token
# t.datetime :confirmed_at
# t.datetime :confirmation_sent_at
# t.string :unconfirmed_email # Only if using reconfirmable
## Lockable
# t.integer :failed_attempts, default: 0, null: false # Only if lock strategy is :failed_attempts
# t.string :unlock_token # Only if unlock strategy is :email or :both
# t.datetime :locked_at
t.timestamps null: false
end
add_index :users, :name, unique: true
add_index :users, :email, unique: true
add_index :users, :reset_password_token, unique: true
add_index :users, [:uid, :provider], unique: true
# add_index :users, :confirmation_token, unique: true
# add_index :users, :unlock_token, unique: true
end
end
$ rails db:migrate
$ rails g controller users::registrations
class Users::RegistrationsController < Devise::RegistrationsController
def build_resource(hash={})
hash[:uid] = User.create_unique_string
super
end
end
def self.create_unique_string
SecureRandom.uuid
end
devise_for :users, controllers: {
registrations: "users/registrations"
}
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :validatable,
:omniauthable, omniauth_providers: %i(github)
def self.find_for_github_oauth(auth, signed_in_resource=nil)
user = User.find_by(provider: auth.provider, uid: auth.uid)
unless user
user = User.new(provider: auth.provider,
uid: auth.uid,
name: auth.info.name,
email: User.dummy_email(auth),
password: Devise.friendly_token[0, 20]
)
end
user.save
user
end
def self.dummy_email(auth)
"#{auth.uid}-#{auth.provider}@example.com"
end
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :validatable,
:omniauthable, :confirmable, omniauth_providers: %i(google facebook github)
def self.create_unique_string
SecureRandom.uuid
end
def self.find_for_github_oauth(auth, signed_in_resource=nil)
user = User.find_by(provider: auth.provider, uid: auth.uid)
unless user
user = User.new(provider: auth.provider,
uid: auth.uid,
name: auth.info.name,
email: User.dummy_email(auth),
password: Devise.friendly_token[0, 20]
)
end
user.save
user
end
def self.dummy_email(auth)
"#{auth.uid}-#{auth.provider}@example.com"
end
Devise.setup do |config|
省略
config.omniauth :github, ENV["GITHUB_ID"], ENV["GITHUB_SECRET"], scope: 'user,public_repo'
省略
end
GITHUB_ID=メモした"Client ID"
GITHUB_SECRET=メモした"Client Secret"
.env
gem 'dotenv-rails'
$ bundle install
$ rails g controller oauth_test index
<p><%= notice %><%= alert %></p>
<% if user_signed_in? %>
<%= link_to "ログアウト", destroy_user_session_path, method: :delete %>
<% else %>
<%= link_to 'githubでサインアップしてね', user_github_omniauth_authorize_path %>
<% end %>
devise_for :users, controllers: {
registrations: "users/registrations",
omniauth_callbacks: "users/omniauth_callbacks"
}
class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
def github
@user = User.find_for_github_oauth(request.env["omniauth.auth"], current_user)
if @user.persisted?
sign_in_and_redirect @user, :event => :authentication
set_flash_message(:notice, :success, :kind => "Github") if is_navigational_format?
else
session["devise.github_data"] = request.env["omniauth.auth"]
redirect_to new_user_registration_url
end
end
end
root :to => 'oauth_test#index'
省略
<body>
<% if notice %>
<p class="alert alert-notice"><%= notice %></p>
<% end %>
<% if alert %>
<p class="alert alert-error"><%= alert %></p>
<% end %>
<%= yield %>
省略
처음 쓰는 건데 고생이 많네요.д)
쓰고 정리하는 게 힘들어요.д)
많이 쓴 사람 대단하다.д)
다만, 자신에게도 이롭기 때문에 앞으로도 계속 쓰자!!
끝까지 봐주셔서 감사합니다!!
Reference
이 문제에 관하여(Rails5.1에서 Github 로그인), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/fa19940118/items/e081e99d6a199568810f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)