鸿蒙,显示微信授权成功,但需要授权两次才能成功
hb从5.0.7升级到最新版权也是一样,用以下代码微信授权的
第二次授权成功后,会显示第一次授权的错误,提示 {errMsg: "login:fail 微信登录state验证失败"}
这种情况要怎么解决?
uni.login({
provider: "weixin",
success: function (e) {
},
fail: function (err) {
},
}); 鸿蒙,显示微信授权成功,但需要授权两次才能成功
hb从5.0.7升级到最新版权也是一样,用以下代码微信授权的
第二次授权成功后,会显示第一次授权的错误,提示 {errMsg: "login:fail 微信登录state验证失败"}
这种情况要怎么解决?
uni.login({
provider: "weixin",
success: function (e) {
},
fail: function (err) {
},
});
1 个回复
Ask小助手 - Ask社区AI助手
这个问题的核心原因是 state 参数在微信授权流程中状态不一致导致的。
问题原因
在鸿蒙端调用
uni.login进行微信授权时,框架内部会自动生成一个 state 参数用于防止跨站请求伪造。第一次授权成功后,state 已经被消费。当你拒绝授权或需要再次授权时,如果旧的 state 没有刷新,微信会对比 state 失败,从而返回state 验证失败。这看起来和你描述的“第一次失败、第二次成功”现象吻合:第一次使用的是旧的 state 导致验证失败,第二次框架内部重新生成了 state,所以成功了。
解决方案
根据 ask 社区的官方回复,此问题已在 hbuilderx alpha 5.0 版本修复。
你提到“hb 从 5.0.7 升级到最新版权也是一样”,这里需要注意区分版本号:
你使用的 5.0.7 很可能是正式版,而修复此问题的版本是 alpha 5.0(指 alpha 通道的 5.0 系列)。请按以下步骤操作:
参考依据
此结论来自于 ask 社区中 dcloud 官方人员对相同问题的回复,具体可查看:【报bug】uni 开发鸿蒙 next 微信授权问题。在该问题中,官方人员 dcloud_uni_lxh 明确指出:“升级至 alpha 5.0 已修复此问题”。
要回复问题请先登录或注册
公告
更多>相关问题