Google Apps Script调用Gate.io API报INVALID_SIGNATURE签名不匹配问题求助
Gate.io API INVALID_SIGNATURE 报错排查建议
- 首先校验API密钥正确性
- 确认填入的
sec为API Secret而非API Key,复制时不要带入前后空格、换行符等多余字符 - 确认当前API密钥未过期、已开通对应产品线权限(你调用的是合约接口,需要开通合约读写权限)
- 确认填入的
- 校验时间戳有效性
- Gate.io v4接口要求请求时间戳与服务器时间差不能超过5秒,不要直接使用本地时间生成时间戳,建议先调用Gate.io公共时间接口获取服务器时间再用来生成签名
- 校验签名原串格式
- 确认查询参数排序规则符合要求:所有查询参数必须按key的ASCII码升序排列后拼接为查询字符串,你当前使用的
contract=BTC_USD&status=finished&limit=50顺序符合要求,若后续新增参数需重新按规则排序 - 确认签名原串的换行符为
\n(LF格式),不存在多余换行、漏换行的情况 - 确认请求方法为全大写,请求路径与接口路径完全一致,无多余斜杠、拼写错误
- 确认查询参数排序规则符合要求:所有查询参数必须按key的ASCII码升序排列后拼接为查询字符串,你当前使用的
- 校验请求体哈希逻辑
- GET请求无请求体时,
requestPayload需为SHA512哈希空字符串的结果,你可以打印该值与官方示例中空请求体的哈希值比对确认正确性 - 若后续使用POST请求,需将完整请求体JSON字符串做哈希,注意JSON字符串的键值顺序、空格、引号要和请求时发送的完全一致
- GET请求无请求体时,
- 校验请求参数一致性
- 确认签名时使用的查询字符串,和最终请求URL中携带的查询参数完全一致,无遗漏、多余、拼写错误的参数
- 若参数包含特殊字符,需严格按RFC3986标准做URL编码,空格编码为
%20而非+,特殊字符的十六进制编码使用大写
- 交叉验证签名结果
- 固定时间戳、参数、密钥,将你代码生成的签名结果和官方提供的本地签名工具生成的结果比对,若不一致则为本地加密逻辑存在问题
内容的提问来源于stack exchange,提问作者dziubas
相关产品推荐
相关产品推荐

