PC SOFT

DOCUMENTATION EN LIGNE
DE WINDEV, WEBDEV ET WINDEV MOBILE

Nouveauté WINDEV, WEBDEV, WINDEV Mobile 22 !
  • Propriétés spécifiques à la description des variables de type AuthToken
  • Fonctionnement de l’authentification OAuth 2.0
Produits
WINDEVWEBDEV - Code ServeurWEBDEV - Code NavigateurWINDEV MobileEtats et Requêtes
Plateformes
WindowsLinuxWindows MobileUniversal Windows 10 AppAndroidWidget AndroidiPhone/iPadApple Watch
Langages
JavaPHPAjaxCode Utilisateur (MCU)Langage Externe
Bases de données
HFSQLHFSQL Client/ServeurProcédures stockéesOLE DBODBCAccès Natifs
AuthToken (Type de variable)
En anglais : AuthToken
Le type AuthToken contient les caractéristiques d'un token d'accès à un Webservice. Ce token d'accès a été précédemment demandé par la fonction AuthIdentifie. 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 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"

// 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 = httpGet
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...
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
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 webservice 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.


Remarque : Ces propriétés peuvent être utilisées en utilisant une des deux syntaxes suivantes :
  • <Nom de la variable>..<Nom de la propriété>
  • <Nom de la variable>.<Nom de la propriété>

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 webservice.
Pour utiliser des API du webservice, 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 webservice de Facebook. Dans ce cas, le token d'accès doit être précisé sur l'URL de la requête.
    // 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
Version minimum requise
  • Version 22
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire