Ngày 17 tháng 3 năm 2023 - Máy Tính
Bài viết này sẽ hướng dẫn cách tích hợp hệ thống đăng nhập GitHub vào ứng dụng Python Flask thông qua giao thức OAuth2. Chúng ta sẽ tìm hiểu từng bước cụ thể để thiết lập và vận hành.
1. Tạo Ứng Dụng GitHub Auth
Trước khi bắt đầu, bạn cần tạo một ứng dụng GitHub Auth mới. Quá trình này sẽ cung cấp cho bạn CLIENT_ID và CLIENT_SECRET - hai thông tin quan trọng cần thiết cho việc cấu hình.
Để tạo ứng dụng, truy cập vào trang quản lý ứng dụng của GitHub và điền các thông tin yêu cầu. Lưu ý ghi lại CLIENT_ID và CLIENT_SECRET sau khi tạo xong, vì chúng sẽ được sử dụng trong phần mã nguồn phía sau.
Hình ảnh minh họa quá trình tạo ứng dụng: ![Tạo ứng dụng GitHub Auth]
2. Tích Hợp GitHub Auth Với Flask Sử Dụng Thư Viện m88vin - cổng game quốc tế Authlib
Chúng ta sẽ sử dụng thư viện Authlib để đơn giản hóa quá trình tích hợp OAuth2 vào ứng dụng Flask. Dưới đây là ví dụ về một ứng dụng Flask hoàn chỉnh với bốn trang chính:
- Trang Chủ (index): Kiểm tra trạng thái đăng nhập từ session. Nếu đã đăng nhập, hiển thị thông tin người dùng; ngược lại, hiển thị nút đăng nhập.
- Trang Đăng Nhập (login): Chuyển hướng người dùng đến trang xác thực của GitHub.
- Trang Gọi Lại (callback): Xử lý mã code nhận được từ GitHub, đổi lấy token truy cập và lấy thông tin người dùng trước khi lưu vào session.
- Trang Đăng Xuất (logout): Xóa thông tin session và chuyển hướng về trang chủ.
Mã Nạp Tiền Nohu71 nguồn mẫu:
từ flask nhập Flask, url_for, redirect, session
từ authlib.integrations.flask_client nhập OAuth
nhập os
ứng_dụng = Flask(__name__)
ứng_dụng.bí_mật_khóa = '812848ea396c6aa794e6b6c9'
github = OAuth(ứng_dụng).đăng_ký(
tên='github',
client_id=os.getenv('CLIENT_ID'),
client_secret=os.getenv('CLIENT_SECRET'),
access_token_url='https://github.com/login/oauth/access_token',
access_token_params=None,
authorize_url='https://github.com/login/oauth/authorize',
authorize_params=None,
api_base_url='https://api.github.com/',
client_kwargs={'scope': 'user:email'},
)
@ứng_dụng.route('/')
def chỉ_số():
người_dùng = session.lấy('user_email')
nếu người_dùng là Không_có:
login_url = url_for('đăng_nhập', _external=True)
trả_về f'<p>Đăng Nhập</p>'
logout_url = url_for('đăng_xuất', _external=True)
trả_về f'<p>Chào mừng {người_dùng}! | Đăng Xuất</p>'
@ứng_dụng.route('/đăng_nhập')
def đăng_nhập():
callback_uri = url_for('gọi_lại', _external=True)
trả_về github.authorize_redirect(callback_uri)
@ứng_dụng.route('/gọi_lại')
def gọi_lại():
token = github.authorize_access_token()
phản_hồi = github.lấy('người_dùng', token=token)
hồ_sơ = phản_hồi.json()
session['user_email'] = hồ_sơ['email']
trả_về redirect('/')
@ứng_dụng.route('/đăng_xuất')
def đăng_xuất():
session.pop('user_email', None)
trả_về redirect('/')
nếu '__main__' == __name__:
ứng_dụng.chạy(debug=True)
3. Chạy Và Kiểm Tra Chương Trình
Để chạy chương trình, trước tiên cần cài đặt các gói phụ thuộc và thiết lập biến môi trường chứa CLIENT_ID và CLIENT_SECRET. Sử dụng các lệnh sau:
python3 -m pip cài -r yêucầu.txt
xuất CLIENT_ID=XXX
xuất CLIENT_SECRET=XXX
python3 ứng_dụng.py
Sau khi chương trình khởi động thành công, mở trình duyệt và truy cập địa chỉ localhost để kiểm tra quy trình đăng nhập. Minh họa quy trình như sau:
![Quy trình đăng 99win club nhập]
Như vậy, bài viết đã giới thiệu chi tiết cách tích hợp hệ thống đăng nhập GitHub vào ứng dụng Flask. Mã nguồn mẫu đã được chia sẻ trên GitHub cá nhân, mời bạn đọc theo dõi và đóng góp.
[Tài Liệu Tham Khảo]
- Hướng dẫn nhanh Flask | Flask - flask.palletsprojects.com
- Tạo ứng dụng OAuth mới | GitHub - github.com
- Xác thực API REST với ứng dụng OAuth | Tài liệu GitHub - docs.github.com
- Hướng dẫn đăng nhập OAuth GitHub | Blog mạng của Nguyễn Nhất Phong - www.ruanyifeng.com
- Xác thực với Flask và GitHub | Cộng đồng Phát triển - dev.to
- Quản lý phiên làm việc và cookie trong Flask | Rithm School - www.rithmschool.com
![Python]