欢迎到专业群( HBuilderX技术交流群 ) 咨询,群中有相关专业的管理员和群友。
这个报错可以拆开看:code: -100 和 login:fail send 表示客户端向微信 sdk 发起授权请求时发送失败,innerCode: -6 是微信 sdk 返回的内部错误码。在微信 sdk 的错误码定义中,-6 表示"禁止"(可参考微信支付错误码表,登录与支付是同一套微信 sdk 错误码体系)。出现 -6 时,绝大多数情况不是代码问题,而是应用包名/应用签名与微信开放平台登记的信息不一致,微信在校验时直接拒绝了请求。
请按下面的顺序排查(按出现概率从高到低):
1. 核对应用签名(最常见原因)
微信开放平台创建移动应用时填写的"应用签名",是由打包证书的 keystore 生成的 md5(32 位小写十六进制、无冒号)。重点注意:
- 真机调试如果用的是标准基座,或者用 dcloud 公共测试证书制作的自定义基座,其签名和你微信开放平台上登记的签名必然不一致,会直接报 -6。
- 解决方式:使用你自己的 android 证书制作自定义调试基座(HBuilderX 菜单【运行】->【运行到手机或模拟器】->【制作自定义调试基座】,证书选择自有证书),或者用自有证书走【发行】->【原生App-云打包】后安装正式包再测试。
- 验证方法:在已安装你的 app 的手机上,安装微信官方的签名查看工具(gen_signature_android2.apk),输入包名后得到的签名,必须与微信开放平台后台填写的"应用签名"完全一致。也可以用
keytool -list -v -keystore 你的证书.keystore 查看证书 md5 进行比对。
2. 核对包名
微信开放平台移动应用的包名,必须与 manifest.json【基础配置】中的 android 包名完全一致(注意大小写敏感)。
3. 核对 manifest.json 中的微信登录配置
打开项目的 manifest.json -> 【App模块配置】->【OAuth(登录鉴权)】-> 勾选"微信登录",填写的 appid 必须是微信开放平台(open.weixin.qq.com)的移动应用 appid,不是公众号或小程序的 appid。修改配置后需要重新制作基座或重新打包才能生效。ios 端还需确认 bundle id 及通用链接(universal links)配置正确。
4. 其他基础检查
- 确认微信开放平台的移动应用已通过审核(未过审的应用没有登录能力)。
- 确认测试机上已安装微信客户端且能正常登录。
- 确认手机网络正常。
5. 调用代码参考
确认配置无误后,按官方文档的方式调用(知识库来源:使用微信登录):
uni.login({
"provider": "weixin",
"onlyAuthorize": true, // 微信登录仅请求授权认证
success: function(event){
const {code} = event
//客户端成功获取授权临时票据(code),向业务服务器发起登录请求
},
fail: function (err) {
// 登录授权失败 err.code是错误码
}
})
本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent
另外,ask 社区有两例与你完全相同的报错(login:fail send, code:-100, innerCode:-6),可作为同类问题参考:问题131523、问题193907。
总结:这个错误基本可以排除代码写法问题,优先怀疑"打包证书签名与微信开放平台登记签名不一致",尤其是用公共测试证书打基座调试的场景。按第 1 步用自有证书重新打基座后,通常即可解决。
1 个回复
Ask小助手 - Ask社区AI助手
这个报错可以拆开看:
code: -100和login:fail send表示客户端向微信 sdk 发起授权请求时发送失败,innerCode: -6是微信 sdk 返回的内部错误码。在微信 sdk 的错误码定义中,-6 表示"禁止"(可参考微信支付错误码表,登录与支付是同一套微信 sdk 错误码体系)。出现 -6 时,绝大多数情况不是代码问题,而是应用包名/应用签名与微信开放平台登记的信息不一致,微信在校验时直接拒绝了请求。请按下面的顺序排查(按出现概率从高到低):
1. 核对应用签名(最常见原因)
微信开放平台创建移动应用时填写的"应用签名",是由打包证书的 keystore 生成的 md5(32 位小写十六进制、无冒号)。重点注意:
keytool -list -v -keystore 你的证书.keystore查看证书 md5 进行比对。2. 核对包名
微信开放平台移动应用的包名,必须与 manifest.json【基础配置】中的 android 包名完全一致(注意大小写敏感)。
3. 核对 manifest.json 中的微信登录配置
打开项目的 manifest.json -> 【App模块配置】->【OAuth(登录鉴权)】-> 勾选"微信登录",填写的 appid 必须是微信开放平台(open.weixin.qq.com)的移动应用 appid,不是公众号或小程序的 appid。修改配置后需要重新制作基座或重新打包才能生效。ios 端还需确认 bundle id 及通用链接(universal links)配置正确。
4. 其他基础检查
5. 调用代码参考
确认配置无误后,按官方文档的方式调用(知识库来源:使用微信登录):
另外,ask 社区有两例与你完全相同的报错(
login:fail send, code:-100, innerCode:-6),可作为同类问题参考:问题131523、问题193907。总结:这个错误基本可以排除代码写法问题,优先怀疑"打包证书签名与微信开放平台登记签名不一致",尤其是用公共测试证书打基座调试的场景。按第 1 步用自有证书重新打基座后,通常即可解决。
要回复问题请先登录或注册
公告
更多>相关问题