PC SOFT

DOCUMENTATION EN LIGNE
DE WINDEV, WEBDEV ET WINDEV MOBILE

  • Propriétés spécifiques à la description des variables de type OAuth2Paramètres
  • Fonctionnement de l’authentification OAuth 2.0
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadApple WatchUniversal Windows 10 AppWindows Mobile
Autres
Procédures stockées
OAuth2Paramètres (Type de variable)
En anglais : OAuth2Parameters
Le type OAuth2Paramètres permet de définir toutes les informations nécessaires pour s’authentifier sur un service Web implémentant le standard OAuth 2.0. Ces caractéristiques peuvent être définies et modifiées à l'aide de différentes propriétés WLangage.
Ce type de variable doit être passé en paramètre à la fonction AuthIdentifie. En cas de succès, cette fonction renvoie une variable de type AuthToken qui pourra être utilisée pour effectuer des requêtes authentifiées sur le service Web.
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.
Versions 23 et supérieures
iPhone/iPad Ce type de variable est désormais disponible pour les applications iPhone/iPad.
Nouveauté 23
iPhone/iPad Ce type de variable est désormais disponible pour les applications iPhone/iPad.
iPhone/iPad Ce type de variable est désormais disponible pour les applications iPhone/iPad.
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 = 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...
Remarques

Propriétés spécifiques à la description des variables de type OAuth2Paramètres

Les propriétés suivantes peuvent être utilisées pour manipuler les informations nécessaires à la demande d'authentification :
Nom de la propriétéType manipuléEffet
ClientIDChaîne de caractèresIdentifiant du client fourni par le service lors de l'enregistrement de l'application.
ClientSecretChaîne de caractèresCode d'accès secret de l’application. Ce code est donné par le service lors de l’enregistrement de l’application.
ParamètresSupplémentairesChaîne de caractèresParamètres de la première requête d’authentification. Cette chaîne doit être formatée comme des paramètres d’URL.
ScopeChaîne de caractèresPermissions demandées. Les valeurs possibles sont spécifiques au service Web utilisé.
URLAuthChaîne de caractèresURL d’autorisation à utiliser (première URL du standard OAuth 2.0).
URLRedirectionChaîne de caractèresURL de redirection à utiliser pendant le mécanisme d'authentification.
WINDEVAndroid Pour une application Windows ou Android, cette URL doit être de la forme "http://localhost:NumeroPort". Cette valeur doit être strictement identique à celle renseignée lors de la déclaration de l'application dans le service Web concerné.
iPhone/iPad Cette propriété doit obligatoirement être renseignée. Elle correspond au schéma d'URL de redirection spécifié par le fournisseur du service Web pour iOS.
Exemples :
  • pour Facebook, l'URL doit être de la forme "fb<ClientId>://authorize/".
  • pour Google, l'URL doit être de la forme "<ID du groupe>:/oauth2redirect".
URLTokenChaîne de caractèresURL de récupération du token d’accès à utiliser (seconde URL du standard OAuth 2.0).

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 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
Liste des exemples associés :
WD OAuth Exemples didactiques (WINDEV) : WD OAuth
[ + ] OAuth permet d'agir en tant qu'utilisateur d'une plateforme tierce sans connaître les identifiants (nom d'utilisateur et mot de passe) de cet utilisateur.
Beaucoup de plateformes tierces (Google, Twitter, Facebook pour ne citer qu'eux) proposent des API pour lesquelles il est possible de se connecter avec les informations d'un de leurs utilisateurs. Cette identification est faite au travers de OAuth. Ainsi, toutes les requêtes effectuées sur leurs services (API, ...) devront être effectuées avec un "jeton d'accès" (appelé Access Token) identifiant à la fois l'application (le "client") et l'utilisateur.
L'exemple propose didactiquement de se connecter à Google et Microsoft grâce à la fonction AuthIdentifie et au type OAuth2Paramètre.
Version minimum requise
  • Version 22
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire