uni-app uniStarter模板创建的项目 微信一键登录失败

发布于 1周前 作者 gougou168 来自 Uni-App

uni-app uniStarter模板创建的项目 微信一键登录失败

测试过的手机:

华为Mate20,小米红米K60

示例代码:

根据uniStarter模板创建项目

操作步骤:

创建了项目后,配置微信appid和appsecret。

  1. uni_modules\uni-config-center\uniCloud\cloudfunctions\common\uni-config-center\uni-id\config.json配置appid和appsecret
  2. manifest下的app模块配置选中QAuth的微信登录,填上appid

预期结果:

微信验证通过

实际结果:

微信一键登录,报错【获取第三方账号失败】
UniCloud控制台:

15:50:25.577 [本地调试][云对象:uni-id-co]调用方法:[loginByWeixin],请求参数: {"code":"033uZPGa1WV8BG0HvzHa1Phjz23uZPGD"}
15:50:26.130 [本地调试]Error: invalid code, rid: 65814b41-7fc8f0ff-459587cf uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/module/login/login-by-weixin.js:67:12
15:50:26.130 [本地调试]    at generateApiResult (D:\00_workspace\HBuilderProjects\testUniStartV3_98\uni_modules\uni-id-pages\uniCloud\cloudfunctions\uni-id-co\lib\third-party\weixin\normalize.js:10:11)
15:50:26.130 [本地调试]    at callWxOpenApi (D:\00_workspace\HBuilderProjects\testUniStartV3_98\uni_modules\uni-id-pages\uniCloud\cloudfunctions\uni-id-co\lib\third-party\weixin\normalize.js:73:5)
15:50:26.130 [本地调试]    at processTicksAndRejections (node:internal/process/task_queues:96:5)
15:50:26.130 [本地调试]    at async Proxy._requestWxOpenapi (D:\00_workspace\HBuilderProjects\testUniStartV3_98\uni_modules\uni-id-pages\uniCloud\cloudfunctions\uni-id-co\lib\third-party\weixin\account\index.js:21:20)
15:50:26.130 [本地调试]    at async Proxy.getOauthAccessToken (D:\00_workspace\HBuilderProjects\testUniStartV3_98\uni_modules\uni-id-pages\uniCloud\cloudfunctions\uni-id-co\lib\third-party\weixin\account\index.js:48:20)
15:50:26.130 [本地调试]    at async de.global.__tempModuleExports.module.exports (D:\00_workspace\HBuilderProjects\testUniStartV3_98\uni_modules\uni-id-pages\uniCloud\cloudfunctions\uni-id-co\module\login\login-by-weixin.js:65:30)
15:50:26.552 [本地调试][云对象:uni-id-co]返回结果: {"errCode":"uni-id-get-third-party-account-failed","errMsg":"获取第三方账号失败"}

真机调试信息:

15:50:17.396 univerify at uni_modules/uni-id-pages/components/uni-id-pages-fab-login/uni-id-pages-fab-login.vue:236
15:50:17.492 App Hide at App.vue:49
15:50:23.881 点击了第三方登录,provider:,  [Object] {"code":"30008","message":"用户点击了自定义按钮","index":2,"provider":"weixin"},  weixin,   , [Object] [{"iconPath":"/uni_modules/uni-id-pages/static/login/uni-fab-login/user.png","provider":"us...
15:50:23.881 weixin at uni_modules/uni-id-pages/components/uni-id-pages-fab-login/uni-id-pages-fab-login.vue:353
15:50:23.928 App Show at App.vue:46
15:50:23.944 [Object] {"errMsg":"login:fail -20301一键登录失败","code":30006,"appid":"pPyZWvH3Fa6PXba10aJ009","uid":"gt...
15:50:24.383 weixin at uni_modules/uni-id-pages/components/uni-id-pages-fab-login/uni-id-pages-fab-login.vue:236
15:50:24.383 [Object] {"fullScreen":true,"backgroundColor":"#ffffff","buttons":{"iconWidth":"45px","list":[{"icon...
15:50:24.492 App Hide at App.vue:49
15:50:25.381 [Object] {"code":"033uZPGa1WV8BG0HvzHa1Phjz23uZPGD","authResult":"","errMsg":"login:ok"}  at uni_modules/uni-id-pages/components/uni-id-pages-fab-login/uni-id-pages-fab-login.vue:438
15:50:25.396 [Object] {"params":{"code":"033uZPGa1WV8BG0HvzHa1Phjz23uZPGD"},"type":"weixin"}  at uni_modules/uni-id-pages/components/uni-id-pages-fab-login/uni-id-pages-fab-login.vue:458
15:50:25.396 loginByWeixin at uni_modules/uni-id-pages/components/uni-id-pages-fab-login/uni-id-pages-fab-login.vue:461
15:50:25.396 执行登录相关云对象,  uni-id-co,  loginByWeixin at common/appInit.js:56
15:50:25.447 App Show at App.vue:46
15:50:25.456 剪切板内容:12 at common/appInit.js:60
15:50:25.456 -------else at common/appInit.js:71
15:50:25.461 -------complete at common/appInit.js:80
15:50:26.677 [Object] {"objectName":"uni-id-co","methodName":"loginByWeixin","params":[{"code":"033uZPGa1WV8BG0Hv...

bug描述:

使用HBuilderX3.98版本,根据uniStarter模板创建了项目,微信一键登录,报错【获取第三方账号失败】
加了部分日志,看在
common/appInit.js:98的uniCloud.interceptObject的invoke报错。


10 回复

invalid code 一般是客户端使用的appId和云端不一致导致的


我尝试在一个新的云空间里,全部重新上传了本地云函数过了。但还是报错【获取第三方账号失败】。问下,有什么方法,可以确认客户端用的appid和云端的是否一致吗?

回复 1***@qq.com: 看看uni-config-center里面uni-id配置的微信小程序的appId和你在小程序开发工具里面看到是不是同一个

回复 DCloud_uniCloud_WYQ: 我们不是微信小程序,是微信的移动应用开发。 我确认了下面四个目录下的appid配置,都是和移动应用开发里的是同一个。 1、manifest.json的appid项目 2、uni_modules\uni-id-pages\config.js的appid项目 3、uni_modules\uni-config-center\uniCloud\cloudfunctions\common\uni-config-center\uni-id的config.json配置微信app的appid和appsecret项 4、uni_modules\uni-id-common\uniCloud\cloudfunctions\common\uni-id-common\node_modules\uni-config-center\uni-id的config.json

回复 DCloud_uniCloud_WYQ: 还有一点,通过uni-id-pages微信登录验证没法通过。但我用下面的uni.login的范例运行,是可以正常返回access_token和refresh_token的,userinfo也可以取到(虽然在manifest上没有设置appsecret) uni.login({ provider: ‘weixin’, success: function (loginRes) { // 登录成功 uni.getUserInfo({ provider: ‘weixin’, success: function(info) {

回复 1***@qq.com: 那你打包自定义基座了吗?

回复 DCloud_uniCloud_WYQ: 问下,之前微信开放申请平台创建移动应用的时候,应用签名是比较早的。和现在新建的证书不符。这个会和微信登录验证不符有关系吗?不过现在跟的是HBuilderX真机调试的,并不是打包运行的。真机调试这和签名没怎么联系,是不是就和微信登录验证就没有关系的?

回复 1***@qq.com: 微信登录一定得打包自定义基座才能用

回复 DCloud_uniCloud_WYQ: 微信开放平台上的签名设置为和打包证书文件匹配;同时打包自定义基座方式运行。现在微信登录可以了。

在使用 uni-appuniStarter 模板创建的项目中,如果遇到微信一键登录失败的问题,可能的原因和解决方法如下:

1. 检查 AppID 和 AppSecret

  • 原因: 微信登录需要正确的 AppIDAppSecret,如果配置错误,登录会失败。
  • 解决方法: 确保在微信开放平台注册的应用 AppIDAppSecret 正确配置在 uniStarter 项目的 manifest.json 文件中。
"mp-weixin": {
    "appid": "your-wechat-appid",
    "secret": "your-wechat-secret"
}

2. 检查微信开放平台配置

  • 原因: 微信开放平台需要配置正确的回调域名或包名,否则登录会失败。
  • 解决方法: 登录微信开放平台,确保回调域名或包名与项目中的配置一致。

3. 检查网络请求权限

  • 原因: 如果项目没有网络请求权限,无法与微信服务器通信,导致登录失败。
  • 解决方法: 确保在 manifest.json 中配置了网络请求权限。
"permission": {
    "scope.userLocation": {
        "desc": "你的位置信息将用于小程序位置接口的效果展示"
    }
}

4. 检查 uniStarter 版本

  • 原因: uniStarter 模板可能有更新,旧版本可能存在兼容性问题。
  • 解决方法: 确保使用的是最新版本的 uniStarter 模板,可以通过 HBuilderX 更新模板。

5. 检查代码逻辑

  • 原因: 代码逻辑错误可能导致登录失败。
  • 解决方法: 检查 uniStarter 项目中与微信登录相关的代码逻辑,确保没有错误。
uni.login({
    provider: 'weixin',
    success: function (loginRes) {
        console.log('微信登录成功', loginRes);
    },
    fail: function (err) {
        console.log('微信登录失败', err);
    }
});
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!