Nếu mất điện thoại hoặc không nhận được mã qua tin nhắn, cuộc gọi hay Google Authenticator, thì bạn có thể dùng mã dự phòng để đăng nhập vào Tài khoản Google của mình. Lưu ý quan trọng:
Tạo và xem tập hợp mã dự phòng
- Truy cập vào Tài khoản Google của bạn.
- Trên bảng điều hướng bên trái, hãy nhấp vào mục Bảo mật.
- Trong phần "Đăng nhập vào Google", hãy nhấp vào Xác minh 2 bước. Bạn có thể cần phải đăng nhập.
- Trong phần "Mã dự phòng", hãy nhấp vào biểu tượng Tiếp tục .
- Tại đây, bạn có thể:
Mẹo:
- Nếu bạn cho rằng các mã dự phòng của mình bị đánh cắp hoặc bạn đã hết mã, hãy tạo một bộ mã mới. Để tạo một bộ mã mới, hãy nhấp vào biểu tượng Làm mới .
- Khi bạn tạo mã mới, bộ mã cũ sẽ tự động bị vô hiệu hóa.
Tìm mã dự phòng bị mất
Hãy tìm tệp Backup-codes-username.txt
trong máy tính bằng tên người dùng của bạn. Ví dụ: nếu tên người dùng của bạn là google123, hãy tìm kiếm Backup-codes-google123.txt
.
Bạn phải tải mã xuống máy tính từ trước để có thể tìm kiếm theo cách này.
Đăng nhập bằng mã dự phòng.
- Tìm mã dự phòng.
- Đăng nhập vào Tài khoản Google của bạn.
- Nhấp vào Thử cách khác.
- Nhấp vào Nhập một trong các mã dự phòng gồm 8 chữ số của bạn.
- Nhập một trong các mã dự phòng bạn chưa sử dụng.
Tùy chọn: Vì mỗi mã chỉ có thể sử dụng một lần, bạn có thể đánh dấu mã là đã sử dụng.
Thông tin này có hữu ích không?
Chúng tôi có thể cải thiện trang này bằng cách nào?
Nếu mất điện thoại hoặc không nhận được mã qua tin nhắn, cuộc gọi hay Google Authenticator, thì bạn có thể dùng mã dự phòng để đăng nhập vào Tài khoản Google của mình. Lưu ý quan trọng:
Tạo và xem tập hợp mã dự phòng
Bạn có thể in một bản mã dự phòng của mình để cất giữ ở nơi an toàn.
Mẹo:
- Nếu bạn cho rằng các mã dự phòng của mình bị đánh cắp hoặc bạn đã hết mã, hãy tạo một bộ mã mới. Để tạo một bộ mã mới, hãy nhấn vào biểu tượng Làm mới .
- Khi bạn tạo mã mới, bộ mã cũ sẽ tự động bị vô hiệu hóa.
Tìm mã dự phòng bị mất
Tìm tệp Backup-codes-username.txt
trong thiết bị Android bằng tên người dùng của bạn. Ví dụ: nếu tên người dùng của bạn là google123, hãy
tìm Backup-codes-google123.txt
. Bạn phải tải mã xuống thiết bị bạn đang sử dụng từ trước để có thể tìm kiếm theo cách này.
Đăng nhập bằng mã dự phòng.
- Tìm mã dự phòng.
- Đăng nhập vào Tài khoản Google của bạn.
- Nhấn vào Thử cách khác.
- Nhấn vào Nhập một trong các mã dự phòng gồm 8 chữ số của bạn
- Nhập một trong các mã dự phòng bạn chưa sử dụng.
Tùy chọn: Vì mỗi mã chỉ có thể sử dụng một lần, bạn có thể đánh dấu mã là đã sử dụng.
Thông tin này có hữu ích không?
Chúng tôi có thể cải thiện trang này bằng cách nào?
1. Tạo google project
Để có chức năng đăng nhập bằng tài khoản gmail bạn cần có thông tin CLIENT ID
và CLIENT SECRET
của google project. Nếu bạn chưa có google project bạn có thể làm theo các bước sau đây.
Đầu tiên bạn đăng nhập vào Google Developers Console [tài khoản đăng nhập chính là tài khoản gmail của bạn].
Chọn Create Project > Điền thông tin project vào form rồi click vào nút CREATE
Sau đó bạn đợt một lát project vừa mới tạo sẽ hiển thị tại cloud-resource-manager
Tiếp đó bạn cần enable chức năng API của google project Bạn click vào Enabled APIs and services
Chọn Google+ API
Click vào ENABLE
- Bước tiếp theo ta sẽ chọn project vừa tạo và sinh ra Client ID và Client secret của project này như sau
- Chọn APIs & Services > Credentials
- Sau khi vào trang Credentials bạn chọn
create crednetials > OAuth client ID
- Tiếp đó bạn chọn tạo
Web application
và điền thông tinName
của application này vàAuthorized redirect URIs
. Bấm crete là bạn đã tạo được mộtOAuth client ID
uthorized redirect URIs
cẩn thận, đây là url sẽ nhận kết quả authenticate trả về từ google. Trong ví dụ trên tôi set giá trị là //localhost:3000/auth/google_oauth2/callback
tương ứng với môi trường develop. Khi chạy trên production bạn cần thêm uthorized redirect URIs
tương ứng với domain của bạn sẽ là /auth/google_oauth2/callback
Vậy là bạn đã có được client ID và client secret của app rồi
Tiếp theo ta sẽ dùng client ID và client secret để làm chức năng đăng nhập với gmail với Rails
2. Đăng nhập bằng tài khoản gmail với Rails
Đầu tiên bạn cần thêm gem omniauth-google-oauth2 vào Gemfile và chạy bundle install
gem 'omniauth-google-oauth2'
Tiếp theo đó ta tạo một file omniauth.rb
ở trong thư mục initializers để khởi tạo OmniAuth
với client ID và client secret đã được tạo ở trên
# config/initializers/omniauth.rb
Rails.application.config.middleware.use OmniAuth::Builder do
provider :google_oauth2,
ENV['GOOGLE_CLIENT_ID'],
ENV['GOOGLE_SECRET'],
scope: "email"
end
Tiếp theo ta tạo model user dùng để lưu lại thông tin người dùng cho việc authenticate
rails g model user provider uid name oauth_token oauth_expires_at:datetime
rake db:migrate
Tiếp đó ta tạo 2 controller mới là home và sessions để thực hiện việc log in và log out của user.
rails g controller home show
rails g controller Sessions create destroy
Tiếp đó ta sửa lại routes như sau
# config/routes.rb
GoogleAuthExample::Application.routes.draw do
get 'auth/:provider/callback', to: 'sessions#create'
get 'auth/failure', to: redirect['/']
get 'signout', to: 'sessions#destroy', as: 'signout'
resources :sessions, only: [:create, :destroy]
resource :home, only: [:show]
root to: "home#show"
end
Ta thấy get 'auth/:provider/callback', to: 'sessions#create'
sẽ dùng để nhận kết quả authenticate từ google trả về trong trường hợp thành công. Còn get 'auth/failure', to: redirect['/']
tương ứng với trường hợp authenticate gặp lỗi. Route get 'signout', to: 'sessions#destroy', as: 'signout'
là link cho phép người dùng đăng xuất.
Tiếp theo chúng ta sẽ viết đoạn code để tạo mới user hoặc tìm user theo thông tin provider và uid google trả về. Để đơn giản tôi sẽ viết ở model User như sau
# app/models/user.rb:
class User