uni-app 微信登陆首次无法获取到unionid
uni-app 微信登陆首次无法获取到unionid
操作步骤:
大概率下载APP后,首次微信登陆 一般都获取不到unionid, 再点一次就可以了, 我目前的做法是,第一次获取失败抛出异常提示,让用户再登陆一次,就可以了,
预期结果:
一次登陆获取到unionid
实际结果:
实际需要两次
bug描述:
app端配置微信登录后, 首次启动应用,点微信登陆 获取不到unionid值, 第二次就可以了,
这个问题我搜了下论坛还有别人也遇到,请问这到底咋解决啊 https://ask.dcloud.net.cn/question/82442
首次启动,获取不到unionid
{
"openid": "oe3SxwiPXzM2FpA6gI2wSwqnV7uo",
"access_token": "41_F8KHp7bnWtqmsla4EDsEh08bV_BCJZ1vBIkfrLk-mtbchqdK1FyQtpekafkjrj6e7MtPQpMmgqBaqXF12EmSas5lLZbw-cMAn3ud3LzWsMs",
"expires_in": 7200,
"refresh_token": "41_9u-6r_ZfMM52-_XgTTc-ZUWGrMQYgWjxKe2s_rNs4vuNYFBHYCZl-HiB1KKVkv13lZ384fuvmK_QZztYNytfi-9nnD9sT8ZGMDMMHJfgIOA",
"scope": "snsapi_userinfo"
}
第二次就正常了
{
"access_token": "41_vBGxJ0u7uonLCIf4Z9LqthAH-NkrvFR6xwWF-6LDGAo0iADt97J8zq2Z6MjbL72c8lP0RMQ6u37SEc0rY733cKtN19TiLndQB_u97jrzYe8",
"expires_in": 7200,
"refresh_token": "41_UZ5gkx2femf1t7P-2XOcgvNSvvwdI8jwkPbpG7Ks-XGctE1EjhudZzDti2BSuf3LC4zD3N3gKL-i25dILDzKR3SaDPxTPVKevQQRQ_LMDuU",
"openid": "oe3SxwiPXzM2FpA6gI2wSwqnV7uo",
"scope": "snsapi_userinfo",
"unionid": "oIj-N1mpuze9u76aUv7a-3cUAdUE"
}
项目信息 | 详情 |
---|---|
产品分类 | uniapp/App |
PC开发环境操作系统 | Windows |
PC开发环境操作系统版本号 | win10 |
HBuilderX类型 | 正式 |
HBuilderX版本号 | 3.0.7 |
手机系统 | Android |
手机系统版本号 | Android 10 |
手机厂商 | 小米 |
手机机型 | 小米9 |
页面类型 | nvue |
打包方式 | 云端 |
项目创建方式 | HBuilderX |
更多关于uni-app 微信登陆首次无法获取到unionid的实战教程也可以访问 https://www.itying.com/category-93-b0.html
3 回复
官方人员抓紧解决一下这个问题吧
这是一个已知的微信登录问题,主要是由于微信授权机制导致的。首次登录时微信服务器可能没有及时返回unionid,需要二次授权才能获取。
解决方案:
- 检查微信开放平台配置是否正确,确保已绑定应用并开启了unionid功能
- 在manifest.json中确认微信SDK配置正确
- 可以尝试在首次登录失败后自动重试一次,而不是让用户手动操作
核心代码建议:
uni.login({
provider: 'weixin',
success: (res) => {
if(!res.authResult.unionid) {
// 首次失败自动重试
uni.login({
provider: 'weixin',
success: (retryRes) => {
// 处理带unionid的结果
}
});
}
}
});