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

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

Nguồn: Viblo

Bình luận
Vui lòng đăng nhập để bình luận
Một số bài viết liên quan