Gérer l’authentification (Token, OAuth)

Fonctions :

  • Authentification avec Token

    Un Token est une clé générée par l'API ou un système d'authentification tiers qui permet de prouver l'identité de l'utilisateur. Les tokens sont souvent utilisés pour l’authentification stateless, c'est-à-dire sans maintenir de session côté serveur.

    Exemple de code :

    import requests
    
    url = "https://api.exemple.com/data"
    headers = {
        "Authorization": "Bearer VOTRE_TOKEN"  # Authentification avec Token
    }
    
    response = requests.get(url, headers=headers)
    
    if response.status_code == 200:
        print("Données récupérées :", response.json())
    else:
        print("Erreur :", response.status_code)

    Explication du code :

    import requests importe la bibliothèque requests, qui permet d’envoyer des requêtes HTTP facilement avec Python.
    
    
    Définir l’URL de l’API
    La variable url = "https://api.exemple.com/data" contient l’adresse de l’API à laquelle on souhaite envoyer une requête HTTP GET.
    Ajouter un en-tête pour l’authentification
    Le dictionnaire headers contient les informations nécessaires à l’authentification. {"Authorization": "Bearer VOTRE_TOKEN"} indique que l’on utilise une authentification par token de type Bearer. Il faut remplacer VOTRE_TOKEN par votre propre jeton d’accès.
    Envoyer une requête GET à l’API
    La ligne response = requests.get(url, headers=headers) envoie une requête HTTP GET à l’URL définie, avec les en-têtes précisés. La réponse de l’API est stockée dans la variable response.
    Vérifier si la requête a réussi
    La condition if response.status_code == 200: permet de vérifier si la requête a retourné un code HTTP 200, ce qui signifie que l’appel a réussi.
    Afficher les données récupérées
    Si la requête est un succès, print("Données récupérées :", response.json()) affiche les données reçues en réponse, converties automatiquement en dictionnaire Python grâce à response.json().
    Afficher un message d’erreur en cas d’échec
    Si la requête échoue (code HTTP différent de 200), print("Erreur :", response.status_code) permet d’afficher un message d’erreur contenant le code de statut HTTP retourné par l’API.
  • Authentification OAuth avec requests_oauthlib

    La bibliothèque requests_oauthlib facilite l'intégration d'OAuth avec la bibliothèque requests. Elle gère automatiquement les flux d'authentification et de rafraîchissement des tokens.

    Importation :

    from requests_oauthlib import OAuth2Session

    Exemple de code :

    from requests_oauthlib import OAuth2Session
    
    # Informations OAuth
    client_id = "VOTRE_CLIENT_ID"
    client_secret = "VOTRE_CLIENT_SECRET"
    redirect_uri = "VOTRE_REDIRECT_URI"
    authorization_base_url = "https://auth.exemple.com/authorize"
    token_url = "https://auth.exemple.com/token"
    
    # Créer une session OAuth
    oauth = OAuth2Session(client_id, redirect_uri=redirect_uri)
    
    # Obtenir l'URL d'autorisation
    authorization_url, state = oauth.authorization_url(authorization_base_url)
    print(f"Allez à cette URL pour vous connecter : {authorization_url}")
    
    # Après l'authentification de l'utilisateur, récupérer le code
    redirect_response = input("Collez l'URL de redirection ici : ")
    
    # Échanger le code d'autorisation contre un token d'accès
    oauth.fetch_token(token_url, authorization_response=redirect_response, client_secret=client_secret)
    
    # Utiliser le token pour faire une requête
    response = oauth.get("https://api.exemple.com/protected_resource")
    
    print("Données récupérées :", response.json())

    Explication du code :

    • OAuth2Session gère l'authentification et la récupération des tokens.
    • fetch_token() récupère automatiquement le token d'accès après avoir échangé le code d'autorisation.