Đăng nhập google trong ứng dụng Ruby On Rails

 Dec-02-2020 05:04 PM
#news #CNTT

Mở đầu

Ngày này, hầu hết các website đều cho phép người dùng có thể đăng nhập thông qua tài khoản mạng xã hội như facebook, google, github.....

Chức năng này khá hữu ích và tiện lợi với người dùng.

Trong bài hôm nay, mình sẽ giới thiệu mọi người cách tạo chức năng đăng nhập google trong ứng dụng Ruby on Rails sử dụng gem devise và gem omniauth-google-oauth2

Cài đặt gem devise

Tại gemfile thêm:

gem 'devise

Run bundle install Tiếp theo run: rails generate devise:install

Tại config/environments/development.rb . Thêm dòng sau:

config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }

Tiếp tục run: rails generate devise User

Và cuối cùng run : rails db:migrate

Cấu hình view devise rails generate devise:views users

Cấu hình controller : rails generate devise:controllers

Cài đặt gem omniauth-google-oauth2

Bước 1: Cài đặt gem

Tại Gemfile thêm:

gem 'omniauth-google-oauth2'

Run bundle install

Bước 2: Config devise.rb

Trong config/initializers/devise.rb . Thêm:

config.omniauth :google_oauth2, ENV["GOOGLE_OAUTH_CLIENT_ID"], ENV["GOOGLE_OAUTH_CLIENT_SECRET"]

Trong đó

ENV["GOOGLE_OAUTH_CLIENT_ID"], ENV["GOOGLE_OAUTH_CLIENT_SECRET"]

Thì các bạn phải cài đặt gem figaro để đặt các biến môi trường tại config/application.yml

Mình sẽ hướng dẫn mọi người các lấy được giá trị của 2 biến này:

Đầu tiên, các bạn vào link sau:

https://console.developers.google.com

Và chọn create project

Chọn project mới vừa được tạo và chọn Oauth consent screen. Điền các thông tin cần thiết theo yêu cầu.

Tiếp theo, chọn Credentials => CREATE CREDENTISLS => Oauth client ID

Tiếp theo tại "application type" chọn Web application.

Tạo xong sẽ hiện form với:

Your Client ID là giá trị của ENV["GOOGLE_OAUTH_CLIENT_ID"]

Your Client Secret là giá trị của ENV["GOOGLE_OAUTH_CLIENT_SECRET"]

Bước 3: Thêm trường uid và provider vào bảng User

Run :

rails generate migration AddOmniauthToUsers

Và run : rails db:migrate

Bước 4. Cấu hình routes như sau:

Bước 5.Cấu hình Controller

Tại app/controllers/users/omniauth_callbacks_controller.rb:

Bước 6. Cấu hình Model

Bước 7. Cấu hình view

Tại app/view/users/sessions/new.html.erb. Thêm

<%= link_to "Sign in with Google", user_google_oauth2_omniauth_authorize_path %>

Lời Kết

Trong bài này, mình đã giới thiệu với mọi người về cách tạo chức năng đăng nhập google trong ứng dụng Ruby on Rails.

Cảm ơn mọi người đã đọc !

Tài liệu tham khảo

https://github.com/heartcombo/devise

https://github.com/zquestz/omniauth-google-oauth2

https://medium.com/@adamlangsner/google-oauth-rails-5-using-devise-and-omniauth-1b7fa5f72c8e

Nguyễn Văn Thư

Hỗ trợ trực tuyến
Online Offline
Hỗ trợ trực tuyến