CÀI ĐẶT LOGIN GOOGLE TRONG PYTHON FLASK

25/02/2022 134
LOGIN GOOGLE PYTHON FLASK
CODEWELL

Trong bài viết này, CO-WELL Asia sẽ hướng dẫn các bạn cách cơ bản nhất để có thể login Google trong Python Flask.

Để bắt đầu, trước tiên chúng ta phải tạo một dự án trong Google Developers của Google để lấy được client key và client secret của người dùng.

1. Tạo project trên Google Console

 

Đăng nhập bằng thông tin đăng nhập Google của bạn nếu bạn chưa thể đăng ký

 

  • “Chọn một dự án mới” → “Dự án mới”

Python Flask 1

 

  • Điền đầy đủ tên dự án → “Để tạo”

Python Flask 2

 

2. Tạo Credentials

Bước tiếp theo để cài đặt login Google trong Python Flask cũng khá đơn giản, bạn hãy lần lượt làm theo những thao tác sau:

 

  • Ấn và chọn “API và dịch vụ”

Python Flask 3

 

  • “Nhận dạng” => “Tạo định số nhận dạng”

Python Flask 4

 

  • “ID ứng dụng khách OAuth”

Python Flask 5

 

  • “Đồng ý” → Loại người dùng chọn “Bên Ngoài”

Python Flask 6

 

3. Điền thông tin ứng dụng

 

  • Điền đủ thông tin, sau đó ấn “Lưu và tiếp tục” cho đến khi hoàn tất

 

  • Sau đó quay lại “API và dịch vụ” → Chọn “ID ứng dụng khách OAuth”

 

  • Chọn “Loại ứng dụng” → Chọn phân loại ứng dụng cho dự án của bạn. (Mình chọn ứng dụng web)

Python Flask 7

 

  • Sau đó điền tên, nguồn gốc Javascript được phép, URI chuyển hướng được phép → Tạo

 

Sau bước trên, bạn sẽ thấy một hộp thoại có client ID và client secret. Sao chép cả hai chuỗi hoặc tải xuống file JSON vì chúng ta sẽ cần những chuỗi này.

 

4. Tạo config cho ứng dụng và chạy thử nghiệm login Google trong Python Flask

 

Nếu không đăng nhập, chúng ta chuyển hướng người dùng đến trang đăng nhập có chứa liên kết đến thông tin đăng nhập Google

 

from authlib.integrations.flask_client import OAuth

app.config['GOOGLE_CLIENT_ID'] = "your google client id"
app.config['GOOGLE_CLIENT_SECRET'] = "your google client secret"

oauth = OAuth(app)

google = oauth.register(
name = 'google',
client_id = app.config["GOOGLE_CLIENT_ID"],
client_secret = app.config["GOOGLE_CLIENT_SECRET"],
access_token_url = 'https://accounts.google.com/o/oauth2/token',
access_token_params = None,
authorize_url = 'https://accounts.google.com/o/oauth2/auth',
authorize_params = None,
api_base_url = 'https://www.googleapis.com/oauth2/v1/',
client_kwargs = {'scope': 'openid email profile'},
)

 

  • URL route cho login và điều hướng

 

@app.route('/login/google')
def google_login():
google = oauth.create_client('google')
redirect_uri = url_for('google_authorize', _external=True)
return google.authorize_redirect(redirect_uri)

@app.route('/login/google/authorize')
def google_authorize():
try:
google = oauth.create_client('google')
token = google.authorize_access_token()
user_info = google.get('userinfo').json()
u_email = user_info['email']
user = Users.query.filter_by(email=user_info['email']).first()

if not user:
reg = Users(user_info['name'], user_info['email'], '')
db.session.add(reg)
db.session.commit()

session['current_user'] = user_info['name']
session['user_available'] = True
return render_template('index.html', user=user)

except Exception as error:
print(error)
return redirect(url_for('login'))

 

  • Và đây là kết quả khi chạy thử nghiệm

Python Flask 8

 

Kết lại

Trên đây là cách mình làm và đã thành công, hy vọng có thể giúp các bạn login Google trong Python Flask. Chúc các bạn thành công và đừng quên theo dõi chuyên mục CODEWELL trên website CO-WELL Asia để đón đọc những bài viết  về công nghệ bổ ích nhé!
Hồ Nguyễn Bảo Trân – CO-WELL Asia