微信小游戏获取用户相关api返回签名错误87009的解决方案

本文涉及的产品
轻量应用服务器 2vCPU 1GiB,适用于搭建电商独立站
轻量应用服务器 2vCPU 4GiB,适用于网站搭建
轻量应用服务器 2vCPU 4GiB,适用于搭建Web应用/小程序
简介: 微信小游戏获取用户相关api返回签名错误87009的解决方案

             大家在用微信小游戏经常会通过小程序的appid和secret来获取访问权限,这样就能获取用户的加密串,或者查询用户的记录。

            不过微信社区在一些问题上更新并不及时,或者不活跃导致很多用户使用过程中经常遇到奇奇怪怪的签名错误,但无法找到相关的解决方案,这里我就拿微信官网的这个案例加以说明:

internet.getUserEncryptKey | 微信开放文档

这里我们看到

image.gif编辑

于是我们就按照微信官网的方式来生成签名,结果

https://api.weixin.qq.com/wxa/business/getuserencryptkey?access_token=sdfAaB_LcOntkEi0cUvr5b3qFCfe28nsGrZcpCRvj1H0hQLYQEONLTaE_wYS0BUMXqHXn66h_uwPuu64Yucvp7h0Qxgt77PzZeuoo27vxnqG3KXqbv9wSc6sdD0QNGDbACARKH&openid=sdGm5RUzyfDqiVTWjg4oWM87ldsdfsdfPY&signature=e88fb40bf0f35f543b4a1d1b9d646d6484351b3e955b77ac82a85b06591ed380&sig_method=hmac_sha256

提示签名错误:

{"errcode":87009,"errmsg":"invalid signature rid: 6442685e-7243b495-3f8fc51f","key_info_list":[]}

image.gif

那么我们就开始排查签名算法是否有问题:

这里我们提供几个go语言的HmacSha256的签名算法,相信遇到这种问题的很多人都见到过这种算法,我们顺便也就能验证下到底是哪个算法才能帮助我们解决问题,

算法1:

func ComputeHmacSha256(message string, secret string) string {
    key := []byte(secret)
    h := hmac.New(sha256.New, key)
    h.Write([]byte(message))
    sha := hex.EncodeToString(h.Sum(nil))
    return base64.StdEncoding.EncodeToString([]byte(sha))
}

image.gif

算法2

func HmacSha256(key string, data string) string {
    mac := hmac.New(sha256.New, []byte(key))
    _, _ = mac.Write([]byte(data))
    return hex.EncodeToString(mac.Sum(nil))
}

image.gif

算法3:

func HmacSha256(key string, data string) []byte {
    mac := hmac.New(sha256.New, []byte(key))
    _, _ = mac.Write([]byte(data))
    return mac.Sum(nil)
}
// HmacSha256ToHex 将加密后的二进制转16进制字符串
func HmacSha256ToHex(key string, data string) string {
    return hex.EncodeToString(HmacSha256(key, data))
}
// HmacSha256ToHex 将加密后的二进制转Base64字符串
func HmacSha256ToBase64(key string, data string) string {
    return base64.URLEncoding.EncodeToString(HmacSha256(key, data))
}

image.gif

算法4:

func HmacSha256(message string, secret string) string {
    h := hmac.New(sha256.New, []byte(secret))
    io.WriteString(h, message)
    return fmt.Sprintf("%x", h.Sum(nil))
}

image.gif

发现按照官网的方法填充都不对,实际上真正有效的是算法4,那么参数怎么传呢?

应该是

signature:=HmacSha256("",session_key)  

最终完美解决,如果你遇到类似的问题,仍然没有解决,可以下方留言

相关文章
|
3月前
|
小程序 安全 JavaScript
微信小程序API+京东支付,无缝结账体验满分!
在数字化时代,支付体验成为电商竞争关键。本文详解如何通过微信小程序API无缝集成京东支付,实现“一键结账”流畅体验。结合微信庞大用户基础与京东支付安全高效优势,助力电商业务提升转化与用户满意度。
185 0
|
4月前
|
边缘计算 监控 Java
跨境电商 API 对接避坑指南:亚马逊 SP-API 超时问题的 5 种解决方案(附重试代码模板)
在对接亚马逊 SP-API 时,超时问题常导致订单延迟、库存失败,影响运营。本文总结某 3C 品牌实战经验,详解超时的 3 大根源与 5 大解决方案,涵盖动态超时、重试机制、请求拆分、并发控制与边缘加速,并附可复用 Python 代码,助你将超时率从 20% 降至 1% 以下。
|
1月前
|
缓存 数据可视化 定位技术
快递鸟快递API技术指南:获取物流轨迹信息与轨迹地图的解决方案
在当今电商竞争激烈的环境中,物流体验已成为提升用户满意度的关键因素。研究表明,超过 75% 的消费者会因物流信息不透明而放弃下单。
430 1
|
2月前
|
消息中间件 人工智能 Java
抖音微信爆款小游戏大全:免费休闲/竞技/益智/PHP+Java全筏开源开发
本文基于2025年最新行业数据,深入解析抖音/微信爆款小游戏的开发逻辑,重点讲解PHP+Java双引擎架构实战,涵盖技术选型、架构设计、性能优化与开源生态,提供完整开源工具链,助力开发者从理论到落地打造高留存、高并发的小游戏产品。
|
1月前
|
缓存 人工智能 API
API接口调用中的网络异常及解决方案
淘宝API是淘宝开放平台提供的接口集合,支持商品、交易、用户、营销等数据交互。开发者需注册获取App Key,通过签名认证调用API,结合沙箱测试、OAuth授权与安全策略,实现订单管理、数据监控等应用,提升电商自动化与数据分析能力。
|
2月前
|
安全 NoSQL API
拼多多:通过微信支付API实现社交裂变付款的技术解析
基于微信JSAPI构建社交裂变支付系统,用户发起拼单后生成预订单与分享链接,好友代付后通过回调更新订单并触发奖励。集成微信支付、异步处理、签名验签与Redis关系绑定,提升支付成功率与裂变系数,实现高效安全的闭环支付。
415 0
|
3月前
|
人工智能 JSON 前端开发
Mock 在 API 研发中的痛点、价值与进化及Apipost解决方案最佳实践
在 API 开发中,Mock 技术能有效解决后端接口未就绪带来的开发阻碍,保障前端独立高效开发。本文通过电商平台支付接口的实例,分析了常见 Mock 方案的局限性,并深入介绍了 Apipost 提供的灵活 Mock 能力:从固定值返回,到使用内置函数生成动态数据,再到自定义函数处理复杂逻辑,最后实现根据请求参数返回不同响应。这些能力不仅提升了开发效率,也增强了测试的全面性,为前后端协作提供了更高效的解决方案。
181 3
|
2月前
|
小程序 PHP 图形学
热门小游戏源码(Python+PHP)下载-微信小程序游戏源码Unity发实战指南​
本文详解如何结合Python、PHP与Unity开发并部署小游戏至微信小程序。涵盖技术选型、Pygame实战、PHP后端对接、Unity转换适配及性能优化,提供从原型到发布的完整指南,助力开发者快速上手并发布游戏。
|
2月前
|
人工智能 安全 API
F5发布后量子API安全解决方案,以AI驱动全面防护应对量子计算威胁
F5发布后量子API安全解决方案,以AI驱动全面防护应对量子计算威胁
115 0

热门文章

最新文章

下一篇
oss云网关配置