uni-app 微信登录自定义基座正常,打正式包报错40029

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

uni-app 微信登录自定义基座正常,打正式包报错40029

项目信息 详细信息
产品分类 uniapp/App
PC开发环境操作系统 Windows
PC开发环境操作系统版本号 win11
HBuilderX类型 正式
HBuilderX版本号 4.29
手机系统 Android
手机系统版本号 Android 11
手机厂商 一加
手机机型 OnePlus 6T
页面类型 vue
vue版本 vue3
打包方式 云端
项目创建方式 HBuilderX

操作步骤:

  • 打正式包就会返回40029

预期结果:

  • 打正式包也能正常微信登录

实际结果:

  • 打正式包就会返回40029,无法正常微信登录

bug描述:

app应用使用uni.login获取临时code,实现用户微信登录功能. 打包自定义基座可以正常登录, 云端打包成正式包获取code后后端调用GET https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code返回40029,无法微信登录,返回结果如下:

"data": {  
    "unionid": null,  
    "openid": null,  
    "errcode": 40029,  
    "errmsg": "invalid code, rid: 674efbb3-1f015657-4e1d3eb0",  
    "access_token": null,  
    "expires_in": null,  
    "refresh_token": null,  
    "scope": null,  
    "is_snapshotuser": null  
}

App下载地址或H5网址:


2 回复

已解决: 重置微信开放平台AppSecret后,重新打包


针对您提到的uni-app在微信登录时,自定义基座正常但打正式包报错40029的问题,这通常与正式包的权限配置或签名验证有关。错误码40029一般指的是微信登录失败,可能是由于AppID不匹配、签名错误或缺少必要的权限配置。

以下是一些可能帮助解决问题的代码和配置检查步骤:

  1. 检查AppID和AppSecret: 确保您在uni-app项目中配置的AppID与微信开放平台上的AppID完全一致。同时,检查AppSecret是否正确,虽然AppSecret不直接用于登录流程,但在获取开发者凭证时可能会用到。

    // 在manifest.json中配置
    {
      "mp-weixin": {
        "appid": "your-app-id", // 确保这里填写的是正确的AppID
        "setting": {
          "urlCheck": false
        }
      }
    }
    
  2. 验证签名: 微信要求所有正式发布的App必须进行签名验证。请确保您的正式包已经使用正确的证书进行了签名,并且该证书已在微信开放平台上进行了配置。

    • 确保build.json中的打包配置正确指向了您的签名证书。
    • 检查微信开放平台上配置的包名(PackageName)与您的App包名一致。
    // build.json 示例
    {
      "apps": [
        {
          "id": "mp-weixin",
          "root": "",
          "outPath": "dist/build/mp-weixin",
          "distribute": {
            "type": "wxa",
            "keyPath": "/path/to/your/cert.p12", // 指向您的签名证书
            "password": "your-cert-password" // 证书密码
          }
        }
      ]
    }
    
  3. 检查微信登录代码: 确保您的登录代码逻辑正确,并且没有硬编码任何仅在开发阶段有效的信息(如测试用的AppID或签名)。

    uni.login({
      provider: 'weixin',
      success: function (loginResult) {
        // 处理登录结果
        console.log(loginResult.code); // 获取登录凭证
      },
      fail: function (err) {
        console.error('登录失败:', err);
      }
    });
    
  4. 查看微信开发者工具及服务器日志: 使用微信开发者工具查看详细的错误信息,并检查服务器日志以获取更多线索。

如果以上步骤均确认无误但问题依旧存在,建议联系微信开放平台的技术支持,提供详细的错误信息和相关配置,以便获得更具体的帮助。

回到顶部