认证
通过传递访客令牌或使用认证访问,在需要认证的网站上使用 Docs Embed
如果您的 GitBook 文档需要身份验证(例如通过 OIDC、Auth0 或自定义后端对访客进行身份验证),在未提供用户的身份验证令牌时,嵌入无法访问您的文档内容。
有两种方法:
直接传递令牌 (推荐)- 使用访客令牌初始化嵌入
使用基于 Cookie 的检测 - 在加载之前检查 Cookie 中的令牌
方法一:直接传递令牌(推荐)
初始化嵌入时,直接传入访客令牌:
<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>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" },
},
});方法二:基于 Cookie 的检测
如果您的文档站点将访客令牌存储在 Cookie 中(例如 gitbook-visitor-token),您可以在加载嵌入之前进行检查。
当用户登录到您的需验证文档时,GitBook 会在其浏览器 Cookie 中以键 gitbook-visitor-token存储访客令牌。嵌入需要此令牌以从您的文档获取内容。
流程:
用户在您的文档站点登录
GitBook 在浏览器 Cookie 中存储访客令牌
您的应用检查该令牌
如果令牌存在,则加载嵌入并传入令牌
如果令牌不存在,则提示用户登录
使用 NPM 包时,请在初始化前检查令牌:
对于 React 应用,根据令牌是否存在有条件地渲染嵌入:
常见错误
在登录前加载嵌入 – 在加载脚本或组件之前始终检查令牌,或在初始化时直接传入令牌。
令牌无法跨域持久化 – 由于浏览器安全策略,Cookie 无法跨不同域持久化。您的应用和文档必须在相同的域或子域下,或直接传递令牌。
令牌过期 – 令牌可能会过期。如果嵌入返回认证错误,请提示用户重新登录。
使用错误的 Cookie 名称 – 令牌存储为
gitbook-visitor-token– 该组件现在是gitbook-token或其他变体。未将令牌传递给 init/getFrameURL – 使用基于 Cookie 的方法时,请确保将令牌传递给
GitBook('init', ..., { visitor: { token } })或getFrameURL({ visitor: { token } }).
调试
要验证令牌是否存在,请打开浏览器控制台并运行:
如果返回 undefined,则表示用户尚未登录您的文档。
后续步骤
自定义嵌入 – 添加欢迎消息和操作
创建自定义工具 – 与您的产品 API 集成
Docs Embed 文档 – 完整的嵌入指南
最后更新于
这有帮助吗?