Documentation Frappe Framework

Frappe Framework

Client OAuth générique

La Connected App garde les identifiants OAuth. L’intégration la désigne depuis un DocType de réglages, puis obtient une session authentifiée.

1 min de lectureMis à jour le Source : docs.frappe.io

Prérequis

La Connected App stocke l’identifiant client, le secret, les périmètres (scopes) et les points d’entrée de la plateforme visée.

Relier l’intégration

L’exemple utilise Google, mais tout service OAuth 2.0 convient. L’intégration a en général un DocType de réglages, par exemple Google Settings, avec un champ Lien vers Connected App. Un System Manager crée ensuite la Connected App, y saisit les identifiants et la relie à l’intégration. Le DocType de réglages dit quelle Connected App appartient à l’intégration.

python
google_settings = frappe.get_single("Google Settings")
connected_app_name = google_settings.get("connected_app")
connected_app = frappe.get_doc("Connected App", connected_app_name)

L’instance contient les identifiants et les URI. Si l’utilisateur n’est pas encore connecté, il ouvre la Connected App et clique sur le bouton « Connect to ... » en haut à droite. On peut aussi récupérer l’URI d’autorisation pour un bouton ou une redirection maison :

python
authorization_uri = connected_app.initiate_web_application_flow()

Session authentifiée

python
session = connected_app.get_oauth2_session()

Si l’utilisateur n’est pas authentifié à ce moment, il est redirigé vers la page d’authentification. Ensuite, toute ressource autorisée se lit avec la session, par exemple session.get("https://www.googleapis.com/oauth2/v2/userinfo"). Si le jeton d’accès a expiré, la session tente de le rafraîchir.

Point d’attention

get_oauth2_session redirige tant que l’utilisateur n’a pas autorisé l’application. Le rafraîchissement du jeton est automatique d’après la source, qui ne montre pas le code de ce rafraîchissement.

Client OAuth Frappe via Connected App | ERPNext Lab