Authenticate với Github trong Ruby on rails
Bài đăng này đã không được cập nhật trong 3 năm
Ngoài việc đăng ký bằng email và pasword, user có thể đăng ký bằng cách authenticate với Facebook, Google... Bài viết này sẽ giới thiệu về cách authenticate với github trong rails application.
Setup Github
- Vào trang https://github.com/settings/developers
- Click vào Register a new application và điền các thông tin Sau khi tạo sẽ lấy được Client ID và Client Secret
Trong Rails Project
Thêm vào gemfile
rồi bundle install
gem 'omniauth-github'
Tạo file omniauth.rb
trong thư mục config/initializers
và thêm code vào
Rails.application.config.middleware.use OmniAuth::Builder do
provider :github, ENV['CLIENT_ID'], ENV['CLIENT_SECRET']
end
Trong file routes
Rails.application.routes.draw do
root to: "sessions#new"
get "/auth/:provider/callback" => "sessions#create"
end
Trong sessions_controller.rb sẽ có 2 action:
- action new: trong view có nút authenticate với git (root: http://127.0.0.1:3000/ không dùng http://localhost:3000/)
- action create: khi click link authenticate sẽ lấy lấy thông từ git: email , uid, provider, name... lưu vào database
app/controllers/sessions_controller.rb
class SessionsController < ApplicationController
def new
end
def create
user = User.from_omniauth(request.env["omniauth.auth"])
redirect_to root_url
end
end
app/models/user.rb
class User < ActiveRecord::Base
def self.from_omniauth(auth)
where(provider: auth.provider, uid: auth.uid).first_or_initialize.tap do |user|
user.email = auth.info.email
user.uid = auth.uid
user.provider = auth.provider
user.username = auth.info.name
user.save!
end
end
end
Đây là màn hình khi click authenticate
All rights reserved