Effectuer un rappel

Introduction

Dans certains cas, il peut être nécessaire d'exécuter le SDK du navigateur adaptatif sur une page dédiée afin de collecter de nouvelles données du navigateur. Cela peut être nécessaire parce que les données existantes sont devenues obsolètes ou parce que la collecte n'a pas été (ou n'a pas pu être) effectuée sur la page de connexion.

Ce guide vous montrera comment mettre en place une page de collecte dédiée qui effectue la collecte et renvoie l' sessionId résultant à votre application.

Prérequis

La collecte nécessite qu'une application soit configurée pour l'authentification basée sur des règles et qu'elle soit intégrée à Adaptive Access. Cette question est abordée dans la section "On-boarding" d'une application native.

Le code présenté dans ce guide est un ajout à l'application NodeJS décrite à la section Mettre en place un exemple d'application.

Ajouter la page de la collection

Créer un fichier

Créez un nouveau fichier dans le répertoire de votre application modèle, appelé collect.html. C'est cette page qui déclenchera la collecte.

touch collect.html

Créer un fichier et insérer un extrait

La page collect.html doit inclure le snippet web créé pour l'application dans le <head> de la page pour charger et initialiser le Browser SDK. Le SDK du navigateur effectuera alors la collecte de données côté client requise par Adaptive Access.

Ajoutez le code suivant à la page collect.html :

<html>

<head>
  <!--
  Paste the snippet that was provided when you
  on-boarded your application.
  -->

  <script>
    function collect() {
      getSessionId().then(sessionID => {
        const form = document.createElement('form');
        form.method = 'POST';
        form.action = '/collect';
        const sessionIDField = document.createElement('input');
        sessionIDField.type = 'hidden';
        sessionIDField.name = 'sessionId';
        sessionIDField.value = sessionID;
        form.appendChild(sessionIDField);
        document.body.appendChild(form);
        form.submit();
      });
    }
  </script>
  <title>Please wait...</title>
</head>

<body onload='collect()'>
  <h1>Please wait...</h1>
</body>

</html>

Collez l'extrait de site web fourni lors de l'intégration dans la page collect.html- en remplaçant le bloc <!-- ... --> qui indique où le placer.

qu'est-ce qui se passe ici ?

Le code de cette page de collecte attend qu'un identifiant de session soit disponible, puis ajoute cet identifiant dans un formulaire et le soumet à votre application.

Exposer la page de la collection dans l'application

Pour exposer la page de collecte dans votre application, ajoutez le code suivant à la fin du fichier index.js :

// GET /collect loads a standalone API collection page.
// It auto-posts to /collect with sessionId when complete.
app.get("/collect", (_, res) => {
  res.sendFile(__dirname + '/collect.html');
});

Gérer le POST de l' sessionId

Lorsque la page de collecte s'exécute dans le navigateur, elle renvoie un POST au point de terminaison \collect. L'application devra stocker l'identifiant de session, puis appeler ce qui va utiliser l' sessionId (peut-être une opération de rafraîchissement du jeton).

Ajoutez le code suivant à la fin du fichier index.js :

// Handle collection page POST to /collect
app.post("/collect", (req, res) => {
  req.session.sessionId = req.body.sessionId //Save sessionId
  console.log("Got sessionId: " + req.body.sessionId);

  if (req.session.postcollect == "refresh") {
    doRefresh(req, res); // Defined by refresh code
  } else {
    res.send(`<html>Collection Complete!</html>`);
  }
  delete req.session.postcollect;

});

Le code ci-dessus utilise une variable de session appelée postcollect pour déterminer ce qu'il convient de faire une fois que l' sessionId a été obtenu.

Pour l'instant, cette variable n'est pas définie et l'appel au point de terminaison /collect se traduira par un simple message " Collection Complete !" renvoyé au navigateur.

La fonction doRefresh n'est pas encore définie. Il est défini lors de la configuration de l'exemple d'application pour prendre en charge un flux de rafraîchissement de jeton adaptatif.