签名验证失败时接口返回401错误且不执行生成或推流;需在百度智能云控制台创建access key与secret key并妥善保存;构造待签名字符串须按字典序拼接参数并做utf-8及url编码;使用hmac-sha256算法生成64位小写十六进制签名;请求头需包含authorization、x-bce-date和x-bce-nonce,且timestamp与nonce必须严格匹配签名参数。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

调用百度一镜数字人API时,若签名验证失败,接口直接返回401错误且不执行任何生成或推流操作,所有请求必须携带合法签名才能被网关放行。
获取Access Key与Secret Key
登录百度智能云控制台 → 进入「访问管理」→「API密钥管理」→ 点击「创建Access Key」,系统自动生成Access Key ID和Secret Access Key。注意:Secret Access Key仅在创建时显示一次,【务必立即复制保存,关闭页面后无法再次查看】。
创建完成后,Access Key状态默认为启用,无需额外激活。
构造待签名字符串(stringToSign)
第一步:提取所有参与签名的请求参数(不含body中的二进制数据),包括必填参数如version、providerId、timestamp、nonce,以及Access Key ID(参数名固定为accessKeyId)。
第二步:将参数名按字典序升序排列,参数名与值之间用=连接,参数之间用&拼接,例如:accessKeyId=ak123&nonce=abc&providerId=p1×tamp=1721020620&version=v1。
第三步:对拼接后的字符串做UTF-8编码,再进行URL编码(需对=、&等特殊字符编码,但不要双重编码)。这一步漏掉URL编码会导致签名不一致,服务器校验失败。
生成SHA-256签名
方法一:使用Secret Key作为密钥,对上一步得到的URL编码后字符串执行HMAC-SHA256算法,输出为64位小写十六进制字符串。
方法二:若使用Python,可直接调用hmac.new(secret_key.encode(), string_to_sign.encode(), hashlib.sha256).hexdigest(),注意secret_key和string_to_sign都必须是bytes类型,且【secret_key不能带空格或换行符】。
方法三:curl命令中不可直接生成签名,必须由客户端代码或本地工具预先算出,签名值不能通过服务端补全。
组装HTTP请求头
在HTTP请求Header中添加:Authorization: bce-auth-v1/{accessKeyId}/{timestamp}/{expirationInSeconds},其中{expirationInSeconds}建议设为300(5分钟),过期时间从timestamp开始计算。
在同一Header中追加X-Bce-Date: {timestamp}(UNIX时间戳整数,单位秒),该值必须与签名中使用的timestamp完全一致。
最后,在Header中加入X-Bce-Nonce: {nonce},nonce为任意长度不超过128字符的随机字符串,每次请求必须唯一,重复使用将触发防重放拦截。
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











