// Classe OAuthSDLogin // Gère l'authentification OpenID Connect via OAuthSD. Voir : https://oa.dnc.global/86 OAuthSDLogin est une Classe hérite de OAuthAppLogin FIN PROCÉDURE Constructeur() // Appel du constructeur OAuthAppLogin Constructeur OAuthAppLogin("OAuthSD") // Décrit l'application OAuth // La clé et le code secret sont inscrits sur le serveur OAuthSD au moment de l'enregistrement de l'application. m_oServiceOAuth..ClientID = "WindevOAuthSDLogin" // 'Client ID' m_oServiceOAuth..ClientSecret = "uhkdfk7bUXWq!" // 'Client secret' dbgVérifieDifférence(m_oServiceOAuth..ClientID, "", "ClientID non renseigné") dbgVérifieDifférence(m_oServiceOAuth..ClientSecret, "", "ClientSecret non renseigné") // Le flux OAuth 2.0 requiert des 'Scopes' // "Space-delimited set of scope strings." m_oServiceOAuth..Scope = "openid profile sli" // Le flux OAuth 2.0 nécessite deux points d'accès : // - un point d'accès pour authentifier l'utilisateur // - un point d'accès pour l'obtention d'un 'AccessToken' m_oServiceOAuth..URLAuth = "https://oa.dnc.global/authorize" m_oServiceOAuth..URLToken = "https://oa.dnc.global/token" m_oServiceOAuth..ParamètresSupplémentaires = "response_type=code" // // L'URL de callback vers localhost permet à l'application de recevoir le code d'autorisation. m_oServiceOAuth..URLRedirection = "http://localhost:9000/" PROCÉDURE Destructeur() // Résumé : Lit le profil utilisateur // Syntaxe : //[ = ] LectureProfilUtilisateur () // // Paramètres : // Aucun // Valeur de retour : // OAuthWebUser : Informations sur l'utilisateur // PROCÉDURE VIRTUELLE PROTÉGÉE LectureProfilUtilisateur() clInfo est un OAuthWebUser vInfo est un Variant oRequête est une httpRequête oRéponse est une httpRéponse oRequête..URL = "https://oa.dnc.global/userinfo" oRequête..AuthToken = m_oToken oRequête..Méthode = httpGet // Exécute la requête permettant d'obtenir les informations du profil de l'utilisateur connecté oRéponse <- HTTPEnvoie(oRequête) SI PAS ErreurDétectée _ET_ PAS oRéponse..CodeEtat >= 400 ALORS // Décode la réponse JSON contenu dans le message vInfo = JSONVersVariant(oRéponse..Contenu) // Recopie les données lues // Attention, les chaînes sont au format ANSI / UTF-8 // Pour les afficher, il est nécessaire d'utiliser AnsiVersUnicode(, alphabetUTF8) clInfo.ID = vInfo.id clInfo.Nom = vInfo.name clInfo.NomAffiché = vInfo.given_name clInfo.Image = vInfo.picture clInfo.Email = vInfo.email FIN RENVOYER clInfo