×

Tích hợp Google và Facebook login API vào ứng dụng Python

Ngày nay, việc tích hợp các API đăng nhập từ Google và Facebook vào ứng dụng của bạn là một bước quan trọng để nâng cao trải nghiệm người dùng. Việc này không chỉ giúp người dùng đăng nhập dễ dàng mà còn tăng cường tính bảo mật và hiệu quả. Bài viết này sẽ giới thiệu các bước chi tiết để tích hợp Google và Facebook login API vào một ứng dụng Python.

Bước 1: Cài đặt các thư viện cần thiết

Trước hết, bạn cần cài đặt các thư viện Python cần thiết. Sử dụng pip để cài đặt các gói:

pip install requests-oauthlib google-auth

Bước 2: Tạo ứng dụng trên Google Developers Console

  1. Truy cập Google Developers Console.
  2. Tạo một dự án mới hoặc chọn một dự án hiện có.
  3. Điều hướng đến "OAuth 2.0 Client IDs" dưới phần "Credentials".
  4. Tạo một "OAuth 2.0 Client ID" với loại ứng dụng phù hợp (web, desktop, etc.).
  5. Thêm "Authorized redirect URIs" cho dự án của bạn.

Sau khi thực hiện các bước trên, bạn sẽ nhận được client_idclient_secret để sử dụng trong ứng dụng.

Bước 3: Tạo ứng dụng trên Facebook for Developers

  1. Truy cập Facebook for Developers.
  2. Tạo ứng dụng mới.
  3. Thêm sản phẩm "Facebook Login" vào ứng dụng.
  4. Cấu hình URL callback trong phần cài đặt của Facebook Login.

Bạn cũng sẽ nhận được App IDApp Secret từ bước này.

Bước 4: Tích hợp Google Login vào ứng dụng Python

Dưới đây là ví dụ minh họa cách tích hợp Google Login API:

from flask import Flask, redirect, url_for, session
from oauthlib.oauth2 import WebApplicationClient
import requests

app = Flask(__name__)
app.secret_key = 'RANDOM_SECRET_KEY'

client_id = 'YOUR_GOOGLE_CLIENT_ID'
client_secret = 'YOUR_GOOGLE_CLIENT_SECRET'
redirect_uri = 'YOUR_REDIRECT_URI'
discovery_url = 'https://accounts.google.com/.well-known/openid-configuration'

client = WebApplicationClient(client_id)

@app.route('/login')
def login():
    google_provider_cfg = requests.get(discovery_url).json()
    authorization_endpoint = google_provider_cfg["authorization_endpoint"]

    request_uri = client.prepare_request_uri(
        authorization_endpoint,
        redirect_uri=redirect_uri,
        scope=["openid", "email", "profile"],
    )
    return redirect(request_uri)

@app.route('/callback')
def callback():
    code = request.args.get("code")
    google_provider_cfg = requests.get(discovery_url).json()
    token_endpoint = google_provider_cfg["token_endpoint"]

    token_url, headers, body = client.prepare_token_request(
        token_endpoint,
        authorization_response=request.url,
        redirect_url=request.base_url,
        code=code
    )
    token_response = requests.post(
        token_url,
        headers=headers,
        data=body,
        auth=(client_id, client_secret),
    )

    client.parse_request_body_response(json.dumps(token_response.json()))
    userinfo_endpoint = google_provider_cfg["userinfo_endpoint"]
    uri, headers, body = client.add_token(userinfo_endpoint)
    userinfo_response = requests.get(uri, headers=headers, data=body)

    return userinfo_response.json()

if __name__ == '__main__':
    app.run(ssl_context="adhoc")

Bước 5: Tích hợp Facebook Login vào ứng dụng Python

Tương tự, bạn có thể tích hợp Facebook Login API như sau:

from flask import Flask, redirect, url_for, request
import requests

app = Flask(__name__)
app.secret_key = 'RANDOM_SECRET_KEY'

client_id = 'YOUR_FACEBOOK_APP_ID'
client_secret = 'YOUR_FACEBOOK_APP_SECRET'
redirect_uri = 'YOUR_REDIRECT_URI'

@app.route('/login_fb')
def login_fb():
    fb_login_url = f"https://www.facebook.com/dialog/oauth?client_id={client_id}&redirect_uri={redirect_uri}&scope=email"
    return redirect(fb_login_url)

@app.route('/callback_fb')
def callback_fb():
    code = request.args.get("code")
    token_url = f"https://graph.facebook.com/v10.0/oauth/access_token?client_id={client_id}&redirect_uri={redirect_uri}&client_secret={client_secret}&code={code}"
    
    token_response = requests.get(token_url).json()
    access_token = token_response['access_token']
    user_info_url = f"https://graph.facebook.com/me?fields=id,name,email&access_token={access_token}"
    
    user_info_response = requests.get(user_info_url).json()
    
    return user_info_response

if __name__ == '__main__':
    app.run(ssl_context="adhoc")

Kết luận

Qua các bước trên, bạn đã biết cách tích hợp API đăng nhập từ Google và Facebook vào một ứng dụng Python. Việc này không chỉ giúp người dùng đăng nhập nhanh chóng và thuận tiện mà còn tăng cường bảo mật và khả năng quản lý người dùng cho ứng dụng của bạn. Hãy tận dụng các công nghệ này để nâng cao trải nghiệm người dùng và phát triển ứng dụng hiệu quả hơn.

Comments