场景介绍:
站点的访问权限设置为 混合访问或授权访问, 可使用我方提供的示例(php,python,nodejs)来生成一个链接, 只需要引导用户点击链接即可完成访客登录鉴权, 从而达到省略接收验证码的鉴权流程的效果。
需要先在设置-用户与安全-访客与分组中添加访客用户信息
注意点: 示例中的token,只能使用默认的API令牌,不能使用新增的令牌。
php示例
<?php
$token = ''; // 设置->知识库后台->API令牌->默认Token
$email = ''; // 邮箱
$phone = ''; // 手机号
$timestamp = time(); // 当前系统时间戳(秒) 用于我方控制此链接的有效期, 默认有效期为1个月
$website = 'https://{自定义域名}'; // 帮助中心域名, https不能省略
$slug = ''; // 文章路径,非必须,不传登录成功会跳转至首页,传输则会跳转至具体的文章
$secret = hash("sha256", $email . $phone . $timestamp . $token);
echo $website . "/access?email=$email&phone=$phone×tamp=$timestamp&secret=$secret&slug=$slug";
*邮箱和手机号可二选一
python示例
import hashlib
import time
token = '' # 设置->知识库后台->API令牌->默认Token
email = '' # 邮箱
phone = '' # 手机号
timestamp = int(time.time()) # 当前系统时间戳(秒) 用于我方控制此链接的有效期,默认有效期为1个月
website = 'https://{自定义域名}' # 帮助中心域名,https不能省略
slug = ''; # 文章路径,非必须,不传登录成功会跳转至首页,传输则会跳转至具体的文章
secret = hashlib.sha256((email + phone + str(timestamp) + token).encode()).hexdigest()
print(website + f"/access?email={email}&phone={phone}×tamp={timestamp}&secret={secret}&slug={slug}")
nodejs示例
const crypto = require('crypto');
const token = ''; // 设置->知识库后台->API令牌->默认Token
const email = ''; // 邮箱
const phone = ''; // 手机号
const timestamp = Math.floor(Date.now() / 1000); // 当前系统时间戳(秒) 用于我方控制此链接的有效期,默认有效期为1个月
const website = 'https://{自定义域名}'; // 帮助中心域名,https不能省略
const slug = ''; // 文章路径,非必须,不传登录成功会跳转至首页,传输则会跳转至具体的文章
const secret = crypto.createHash('sha256').update(email + phone + timestamp + token).digest('hex');
console.log(`${website}/access?email=${email}&phone=${phone}×tamp=${timestamp}&secret=${secret}&slug=${slug}`);
生成的链接示例
https://{自定义域名}/access?email=&phone=timestamp=1711357679&secret=653b37b44291f43298f7fa1290722f96cb20a7999d93c5f5ae1fb6329bb6ebd3