Authentification

Utilisez Docs Embed avec des sites qui requièrent une authentification en transmettant des jetons visiteurs ou en utilisant un accès authentifié

Si votre documentation GitBook nécessite une authentification (par ex., authentification du visiteur via OIDC, Auth0 ou un backend personnalisé), l'intégration n'aura pas accès au contenu de vos docs à moins que le jeton d'authentification de l'utilisateur ne soit fourni.

Il existe deux approches :

  1. Transmettre le jeton directement (recommandé) - Initialiser l'intégration avec le jeton du visiteur

  2. Utiliser la détection via cookie - Vérifier la présence du jeton dans les cookies avant le chargement

Approche 1 : Transmettre le jeton directement (Recommandé)

Lors de l'initialisation de l'intégration, transmettez directement le jeton du visiteur :

<script src="https://docs.company.com/~gitbook/embed/script.js"></script>
<script>
  window.GitBook(
    "init",
    { siteURL: "https://docs.company.com" },
    { visitor: { token: "your-jwt-token" } }
  );
  window.GitBook("show");
</script>

Si votre site de docs stocke le jeton du visiteur dans les cookies (comme gitbook-visitor-token), vous pouvez le vérifier avant de charger l'intégration.

Lorsqu'un utilisateur se connecte à vos docs authentifiés, GitBook stocke un jeton visiteur dans les cookies de son navigateur sous la clé gitbook-visitor-token. L'intégration a besoin de ce jeton pour récupérer le contenu de vos docs.

Le processus :

  1. L'utilisateur se connecte à votre site de docs

  2. GitBook stocke le jeton visiteur dans les cookies du navigateur

  3. Votre application vérifie la présence du jeton

  4. Si le jeton existe, chargez l'intégration et transmettez le jeton

  5. Si le jeton n'existe pas, invitez l'utilisateur à se connecter

Extrait à copier-coller

Utilisez cet extrait pour charger l'intégration seulement après qu'un utilisateur se soit connecté :

<script>
  (function () {
    // Vérifier le jeton visiteur dans les cookies
    function getCookie(name) {
      var value = "; " + document.cookie;
      var parts = value.split("; " + name + "=");
      if (parts.length === 2) return parts.pop().split(";").shift();
    }

    var token = getCookie("gitbook-visitor-token");

    if (!token) {
      console.warn("[Docs Embed] Veuillez d'abord vous connecter à vos docs.");
      return;
    }

    // Le jeton existe, charger l'intégration
    var script = document.createElement("script");
    script.src = "https://docs.example.com/~gitbook/embed/script.js";
    script.async = true;
    script.onload = function () {
      window.GitBook(
        "init",
        { siteURL: "https://docs.example.com" },
        { visitor: { token: token } }
      );
      window.GitBook("show");
    };
    document.head.appendChild(script);
  })();
</script>

Alternative : Inviter les utilisateurs à se connecter

Si le jeton est manquant, vous pouvez inviter les utilisateurs à se connecter :

<script>
  (function () {
    function getCookie(name) {
      var value = "; " + document.cookie;
      var parts = value.split("; " + name + "=");
      if (parts.length === 2) return parts.pop().split(";").shift();
    }

    var token = getCookie("gitbook-visitor-token");

    if (!token) {
      // Rediriger vers les docs ou afficher un message
      alert("Veuillez vous connecter à vos docs pour accéder à l'aide.");
      window.location.href = "https://docs.example.com";
      return;
    }

    // Charger l'intégration avec le jeton
    var script = document.createElement("script");
    script.src = "https://docs.example.com/~gitbook/embed/script.js";
    script.async = true;
    script.onload = function () {
      window.GitBook(
        "init",
        { siteURL: "https://docs.example.com" },
        { visitor: { token: token } }
      );
      window.GitBook("show");
    };
    document.head.appendChild(script);
  })();
</script>

Pièges courants

  • Chargement de l'intégration avant la connexion – Vérifiez toujours la présence du jeton avant de charger le script ou les composants, ou transmettez le jeton directement lors de l'initialisation.

  • Le jeton ne persiste pas entre les domaines – Les cookies ne persistent pas entre différents domaines en raison des politiques de sécurité du navigateur. Votre application et vos docs doivent être sur le même domaine ou sous-domaine, ou transmettez le jeton directement.

  • Jeton expiré – Les jetons peuvent expirer. Si l'intégration renvoie des erreurs d'authentification, invitez les utilisateurs à se reconnecter.

  • Utilisation d'un nom de cookie incorrect – Le jeton est stocké sous la forme gitbook-visitor-token, pas gitbook-token ou d'autres variantes.

  • Ne pas transmettre le jeton à init/getFrameURL – Lors de l'utilisation de l'approche basée sur les cookies, assurez-vous de transmettre le jeton à GitBook('init', ..., { visitor: { token } }) ou getFrameURL({ visitor: { token } }).

Débogage

Pour vérifier que le jeton est présent, ouvrez la console de votre navigateur et exécutez :

document.cookie.split(";").find((c) => c.includes("gitbook-visitor-token"));

Si cela renvoie undefined, l'utilisateur ne s'est pas encore connecté à vos docs.

Prochaines étapes

Mis à jour

Ce contenu vous a-t-il été utile ?