DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / WLangage / Fonctions WLangage / Communication / Gestion du protocole OAuth 2.0
  • Propriétés spécifiques à la description des variables de type AuthToken
  • Fonctionnement de l'authentification OAuth 2.0
  • Utilisation des variables de type AuthToken
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadWidget IOSApple WatchMac CatalystUniversal Windows 10 App
Autres
Procédures stockées
Le type AuthToken contient les caractéristiques d'un token d'accès à un service Web. Ce token d'accès a été précédemment demandé :
  • soit par la fonction AuthIdentifie.
  • soit par une requête HTTP. Dans ce cas, la requête renvoie le token au format JSON.
Les caractéristiques de ce token d'accès peuvent être définies et modifiées à l'aide de différentes propriétés WLangage.
Remarque : Pour plus de détails sur la déclaration de ce type de variable et l'utilisation des propriétés WLangage, consultez Déclaration d'une variable.
Exemple
// Exemple permettant de récupérer un token pour effectuer une requête sur Dropbox
OAuth2Params est un OAuth2Paramètres
OAuth2Params.ClientID = "01234567890123456789" 
OAuth2Params.ClientSecret = "98765432109876543210"
OAuth2Params.URLAuth = "https://www.dropbox.com/oauth2/authorize"
OAuth2Params.URLToken = "https://api.dropboxapi.com/oauth2/token"
OAuth2Params.ParamètresSupplémentaires = "force_reapprove=false"
<COMPILE SI TypeConfiguration <> SITE>
// Si ce n'est pas dans un site WEB il faut une URL de redirection en localhost
OAuth2Params.URLRedirection = "http://localhost:9874/"
<FIN>

// Demande d'authentification : ouvre la fenêtre de login
MonToken est un AuthToken = AuthIdentifie(OAuth2Params)

// Requête authentifiée sur une API de Dropbox
req est un httpRequête
req.Méthode = httpPost
req.URL = "https://api.dropboxapi.com/2/files/list_folder"
req.AuthToken = MonToken // Token d'authentification
req.ContentType = "application/json"
vParamAPI est un Variant
vParamAPI.path = "/Homework/math"
vParamAPI.recursive = Faux
vParamAPI.include_media_info = Faux
vParamAPI.include_deleted = Faux
vParamAPI.include_has_explicit_shared_members = Faux
req.Contenu = VariantVersJSON(vParamAPI)

réponseHTTP est un httpRéponse = HTTPEnvoie(req)
soit Données = JSONVersVariant(réponseHTTP.Contenu)
// Utilisation des données reçues ...
// Récupère le token (dans du JSON) via une requête HTTP. La fonction AuthIdentifie n'est pas utilisée
// Définition de la requête
httpReq est un httpRequête
httpReq.Méthode = httpPost
httpReq.URL = PAYPAL_TOKEN
httpReq.Utilisateur = PAYPAL_APP_ID
httpReq.MotDePasse = PAYPAL_SECRET
httpReq.Contenu = "grant_type=client_credentials"
httpReq.ContentType = "application/x-www-form-urlencoded"

// Exécution de la requête
httpRep est un httpRéponse = HTTPEnvoie(httpReq)

// Récupération du token
SI httpRep.CodeEtat = 200 ALORS
// Déclare les paramètres, nécessaire pour le rafraîchissement du token
oAuth2Param est un OAuth2Paramètres
oAuth2Param.ClientID = PAYPAL_APP_ID
oAuth2Param.ClientSecret = PAYPAL_SECRET
oAuth2Param.URLAuth = PAYPAL_ACCESS_BASEURL
oAuth2Param.Scope = PAYPAL_SCOPES
oAuth2Param.URLToken = PAYPAL_TOKEN

// Initialise le token avec le JSON
MonToken est un AuthToken(oAuth2Param, httpRep.Contenu)
gMonToken <= MonToken
FIN
Syntaxe

Déclarer une variable de type AuthToken Masquer les détails

MaVariable est un AuthToken
Dans ce cas, la fonction AuthIdentifie permet de récupérer les paramètres du token.

Déclarer et décrire une variable de type AuthToken (sans passer par la fonction AuthIdentifie) Masquer les détails

MaVariable est un AuthToken(<Paramètre OAuth2> , <Token>)
<Paramètre OAuth2> : Variable de type OAuthParamètres
Nom de la variable de type OAuth2Paramètres contenant toutes les informations nécessaires pour s'authentifier sur un service implémentant le standard OAuth 2.0.
<Token> : Chaîne de caractères
Chaîne au format JSON ou UTF8 contenant le token. Correspond au token renvoyé par le service.
Remarques

Propriétés spécifiques à la description des variables de type AuthToken

Les propriétés suivantes peuvent être utilisées pour manipuler un token d'accès à un Webservice :
Nom de la propriétéType manipuléEffet
ActualisationChaîne de caractèresValeur renvoyée par le serveur permettant de savoir si le token peut être renouvelé.
Si cette propriété n'est pas renseignée, il ne sera pas possible d'utiliser la fonction AuthRenouvelleToken pour rafraîchir le token : il faudra alors redemander un nouveau token.
Nouveauté 2024
Android Cette propriété est désormais disponible.
DateExpirationDateHeureDate et heure d'expiration du token.
Nouveauté 2024
Android Cette propriété est désormais disponible.
RéponseServeurBufferValeur renvoyée par le serveur lors de la demande du token d'accès.
Cette propriété est disponible en lecture seulement.
ValeurChaîne de caractèresToken d'accès.
Valeur automatiquement remplie lors de l'utilisation de la fonction AuthIdentifie.
Cette valeur peut être utilisée pour envoyer des requêtes authentifiées sur le service Web concerné.
ValideBooléenValidité du token d'accès :
  • Vrai si le token d'accès est valide.
  • Faux dans le cas contraire.
Cette propriété est disponible en lecture seulement.

Fonctionnement de l'authentification OAuth 2.0

Les étapes de l'authentification OAuth 2.0 réalisées par la fonction AuthIdentifie sont les suivantes :
  • Exécution d'une première requête HTTP pour demander une autorisation (URL d'autorisation spécifiée dans la variable de type OAuth2Paramètres).
  • Ouverture d'une fenêtre d'identification de l'utilisateur conformément au protocole OAuth 2.0. L'interface d'identification est donnée par le service accédé.
  • Après identification, le serveur retourne un premier code d'autorisation permettant de demander un token d'accès aux ressources. Ce code est ajouté en paramètre de la deuxième URL (URL de token d'accès spécifiée dans la variable de type OAuth2Paramètres).
  • Exécution de la seconde requête HTTP pour demander le token d'accès. Le résultat est un buffer JSON qui contient, entre autres, le token d'accès ("access_token") à utiliser pour les requêtes authentifiées. La variable de type AuthToken contient les informations contenues dans ce buffer JSON. Ce token d'accès sera utilisé par les appels aux APIs du service Web.
Pour utiliser des API du service Web, il suffit d'utiliser la fonction HTTPEnvoie avec une variable de type httpRequête définissant la requête à exécuter.
La variable AuthToken devra être affectée à la propriété AuthToken de la variable httpRequête (voir exemple).
Dans ce cas, le serveur recevra alors l'entête HTTP "Authorization" avec une valeur de la forme : "Authorization : Bearer xxx_access_token_xxx".
Attention :
  • Si le serveur ne renvoie pas le token d'accès sous forme de code JSON conformément à la norme OAuth2.0, une erreur sera générée et le token ne sera pas récupéré. Il est possible de récupérer la réponse du serveur via la propriété RéponseServeur de la variable de type AuthToken.
  • Si le serveur ne gère pas l'entête HTTP "Authorization" pour la transmission du token d'accès, cette transmission doit être faite par le développeur selon le format attendu par le service demandé.
    L'exemple suivant permet d'utiliser le service Web de Facebook. Dans ce cas, le token d'accès doit être précisé sur l'URL de la requête.
    • WINDEVAndroid Exemple de code pour Facebook
      // Exemple permettant de récupérer le nom du compte Facebook
      MonToken est un AuthToken
      MonTokenParam est un OAuth2Paramètres

      MonTokenParam.ClientID = "123456789012345"
      MonTokenParam.ClientSecret = "45g8jh5kll45579021qsg5444j"
      MonTokenParam.URLAuth = "https://www.facebook.com/dialog/oauth"
      MonTokenParam.URLToken = "https://graph.facebook.com/v2.3/oauth/access_token"
      MonTokenParam.URLRedirection = "http://localhost:9874/"
      MonTokenParam.Scope = "email"

      MonToken = AuthIdentifie(MonTokenParam)
      SI MonToken <> Null ALORS
      SI ErreurDétectée ALORS
      Erreur(ErreurInfo())
      SINON
      // Token précisé sur l'URL de la requête
      HTTPRequête("https://graph.facebook.com/me?access_token=" + MonToken.Valeur)
      vMonRes est un Variant = JSONVersVariant(HTTPDonneRésultat(httpRésultat))
      // Récupération du nom du compte
      Trace(vMonRes.name)
      FIN
      FIN
    • iPhone/iPad Exemple de code pour Facebook :
      MonToken est un AuthToken
      MonTokenParam est un OAuth2Paramètres
      MonTokenParam.ClientID = "1705548803004741"
      MonTokenParam.ClientSecret = "7b3305a5aa1687ef04af001ec3388ecc"
      MonTokenParam.URLAuth = "https://www.facebook.com/dialog/oauth"
      MonTokenParam.URLToken = "https://graph.facebook.com/oauth/access_token"
      MonTokenParam.URLRedirection = "fb1705548803004741://authorize/"
      MonTokenParam.Scope = "email"

      MonToken = AuthIdentifie(MonTokenParam)
      SI MonToken <> Null ALORS
      SI ErreurDétectée ALORS
      Erreur(ErreurInfo())
      SINON
      // Token précisé sur l'URL de la requête
      HTTPRequête("https://graph.facebook.com/me?access_token=" + MonToken.Valeur)
      vMonRes est un Variant = JSONVersVariant(HTTPDonneRésultat(httpRésultat))
      // Récupération du nom du compte
      Trace(vMonRes.name)
      FIN
      FIN

Utilisation des variables de type AuthToken

Les variables de type AuthToken peuvent être utilisées dans les fonctions :
Version minimum requise
  • Version 22
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire

Dernière modification : 06/03/2024

Signaler une erreur ou faire une suggestion | Aide en ligne locale