Authentification
Utilisez Docs Embed avec des sites nécessitant une authentification en transmettant des jetons de visiteur ou en utilisant l’accès authentifié
Si votre documentation GitBook nécessite une authentification (par ex. authentification des visiteurs via OIDC, Auth0 ou un backend personnalisé), l’intégration ne peut pas accéder au contenu de vos docs sauf si le jeton d’authentification de l’utilisateur est fourni.
Il existe deux approches :
Transmettre le jeton directement (recommandé) - Initialiser l’intégration avec le jeton du visiteur
Utiliser une détection basée sur les cookies - 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?jwt_token=your-jwt-token"></script>
balise
window.GitBook(
"init",
{ siteURL: "https://docs.company.com" },
{ visitor: { token: "your-jwt-token" } }
);
window.GitBook("show");
</script>import { createGitBook } from "@gitbook/embed";
const gitbook = createGitBook({
siteURL: "https://docs.company.com",
});
const iframe = document.createElement("iframe");
iframe.src = gitbook.getFrameURL({
visitor: {
token: "your-jwt-token",
unsignedClaims: { userId: "123", plan: "premium" },
},
});<GitBookProvider siteURL="https://docs.company.com">
<GitBookFrame
visitor={{
token: "your-jwt-token",
unsignedClaims: { userId: "123" },
}}
/>
</GitBookProvider>Approche 2 : détection basée sur les cookies
Si votre site de documentation 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 à votre documentation authentifiée, GitBook stocke un jeton de 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 flux :
L’utilisateur se connecte à votre site de documentation
GitBook stocke le jeton du visiteur dans les cookies du navigateur
Votre application vérifie la présence du jeton
Si le jeton existe, chargez l’intégration et transmettez le jeton
Si le jeton n’existe pas, invitez l’utilisateur à se connecter
Extrait à copier-coller
Utilisez cet extrait pour charger l’intégration uniquement après qu’un utilisateur s’est connecté :
balise
(function () {
// Vérifier la présence du jeton du 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, chargez l’intégration
var script = document.createElement("script");
script.src =
"https://docs.example.com/~gitbook/embed/script.js?jwt_token=" +
encodeURIComponent(token);
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>Remplacer docs.example.com avec l’URL réelle de votre site de documentation.
Alternative : inviter les utilisateurs à se connecter
Si le jeton est manquant, vous pouvez inviter les utilisateurs à se connecter :
balise
(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 संदेश
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?jwt_token=" +
encodeURIComponent(token);
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>Lorsque vous utilisez le package NPM, vérifiez la présence du jeton avant l’initialisation :
import { createGitBook } from "@gitbook/embed";
function initializeEmbed() {
// Vérifier la présence du jeton dans les cookies
const getCookie = (name) => {
const value = `; ${document.cookie}`;
const parts = value.split(`; ${name}=`);
if (parts.length === 2) return parts.pop().split(";").shift();
};
const token = getCookie("gitbook-visitor-token");
if (!token) {
console.warn("[Docs Embed] L’utilisateur doit d’abord se connecter.");
return null;
}
const gitbook = createGitBook({
siteURL: "https://docs.example.com",
});
const iframe = document.createElement("iframe");
iframe.src = gitbook.getFrameURL({
visitor: { token: token },
});
const frame = gitbook.createFrame(iframe);
document.getElementById("embed-container").appendChild(iframe);
return frame;
}
initializeEmbed();Pour les applications React, affichez l’intégration de manière conditionnelle selon la présence du jeton :
import { useEffect, useState } from "react";
import { GitBookProvider, GitBookFrame } from "@gitbook/embed/react";
function App() {
const [token, setToken] = useState(null);
useEffect(() => {
// Vérifier la présence du jeton dans les cookies
const getCookie = (name) => {
const value = `; ${document.cookie}`;
const parts = value.split(`; ${name}=`);
if (parts.length === 2) return parts.pop().split(";").shift();
};
const visitorToken = getCookie("gitbook-visitor-token");
setToken(visitorToken);
}, []);
if (!token) {
return (
<div>
<p>Veuillez vous connecter pour accéder à l’aide.</p>
<a href="https://docs.example.com">Se connecter</a>
</div>
);
}
return (
<GitBookProvider siteURL="https://docs.example.com">
<YourAppContent />
<GitBookFrame visitor={{ token: token }} />
</GitBookProvider>
);
}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 directement le jeton 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 bien transmettez directement le jeton.
Jeton expiré – Les jetons peuvent expirer. Si l’intégration renvoie des erreurs d’authentification, invitez les utilisateurs à se reconnecter.
Nom de cookie incorrect – Le jeton est stocké sous
gitbook-visitor-token, et nongitbook-tokenou d’autres variantes.Ne pas transmettre le jeton à init/getFrameURL – Lorsque vous utilisez l’approche basée sur les cookies, assurez-vous de transmettre le jeton à
GitBook('init', ..., { visitor: { token } })ougetFrameURL({ 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.
Étapes suivantes
Personnalisation de l’Embed – Ajoutez des messages d’accueil et des actions
Création d’outils personnalisés – Intégrez avec les API de votre produit
Documentation de Docs Embed – Guide complet d’intégration
Mis à jour
Ce contenu vous a-t-il été utile ?