uv_UI
uv_UI
  • 发布:2026-04-28 21:57
  • 更新:2026-04-29 10:28
  • 阅读:190

关于微信登录Error: 获取第三方账号失败

分类:uniCloud
  1. 最近使用uni-id体系做了两个项目,通过日志和用户反馈发现,微信登录偶尔会有用户触发获取第三方账号失败的情况

  2. 实现方式:通过iframe嵌入下方链接显示登录二维码,扫码后返回code到回调页面,使用uniIdCo.loginByWeixin进行登录,在这一步的时候,偶尔会遇到获取第三方账号失败的情况....

https://open.weixin.qq.com/connect/qrconnect?appid=XXX&scope=snsapi_login&fast_login=1&redirect_uri=我的网站域名(且在微信开放平台申请通过,appid等配置都正确的,因为大部分用户没问题包括我们自己)&login_type=jssdk&self_redirect=true

  1. 在上述中的redirect_uri网址,在微信开放平台申请通过,在unicloud中的appid等参数都是配置正确的,因为大部分用户没问题包括我们自己

  2. 我在多个项目中都遇到这个问题,且遇到几个用户在首次登录后没问题,过几天再登录就会出现这个问题,我们自己没有发现过这个问题,日志只能记录 获取第三方账号失败,没有具体其他原因

2026-04-28 21:57 负责人:无 分享
已邀请:
Ask小助手

Ask小助手

欢迎到专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。

根据知识库中的相关内容,你遇到的 "获取第三方账号失败"(错误码:uni-id-get-third-party-account-failed)通常与 uni-id 的配置方式 有关,特别是当多个项目或应用共用同一个 uniCloud 服务空间时。

问题原因

当你在多个项目中使用同一个服务空间,或者同一个项目需要支持多种登录方式(如同时支持微信小程序和微信网页扫码登录)时,uni-id 的 config 需要特殊配置。如果配置为普通对象形式,可能会导致不同应用之间的配置冲突,从而出现偶尔获取第三方账号失败的情况。

解决方案

uni-id 的 config 支持配置成数组形式,实现多个应用共用同一个服务空间时的用户隔离。查看文档

配置示例

uniCloud/cloudfunctions/common/uni-config-center/uni-id/config.json 中,将配置改为数组形式,并为不同的平台指定不同的 appid 或标识:

[  
  {  
    "dcloudAppid": "__UNI__XXXXXX1",  
    "web": {  
      "oauth": {  
        "weixin-web": {  
          "appid": "网页应用AppID1",  
          "appsecret": "网页应用AppSecret1"  
        }  
      }  
    }  
  },  
  {  
    "dcloudAppid": "__UNI__XXXXXX2",   
    "web": {  
      "oauth": {  
        "weixin-web": {  
          "appid": "网页应用AppID2",  
          "appsecret": "网页应用AppSecret2"  
        }  
      }  
    }  
  }  
]

本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent

重要检查点

  1. 确认 config 已上传:修改配置后,需要在 cloudfunctions/common/uni-config-center 目录右键"上传公共模块",确保云端配置已更新

  2. 检查微信开放平台配置:确保 redirect_uri微信开放平台的网页应用中已正确配置,且与 iframe 中使用的回调地址完全一致(包括协议、域名、路径)

  3. Code 使用问题:微信的 code 只能使用一次,且有 5 分钟有效期。如果用户在回调页面刷新或重复提交,会导致 "invalid code" 错误(从知识库日志中可见此错误)

  4. 区分登录类型:如果是通过微信开放平台的网站应用扫码登录,config 中应配置为 weixin-web;如果是公众号内登录,应配置为 weixin-h5

如果知识库中的方案无法完全解决你的问题,建议检查云端日志中是否有 "invalid code" 或 "appsecret" 相关的错误信息,这通常指向具体的配置不匹配问题。

内容为 AI 生成,仅供参考
uv_UI

uv_UI (作者) - 我与uniapp有着不解的缘分~

没有使用 多个项目或应用共用同一个 uniCloud 服务空间

uv_UI

uv_UI (作者) - 我与uniapp有着不解的缘分~

复现问题了 微信浏览器会出现这个问题

我先排查下原因

uv_UI

uv_UI (作者) - 我与uniapp有着不解的缘分~

问题定位到了:

  1. 在uni-id-co云对象中的\uni-id-co\module\login\login-by-weixin.js中的const weixinPlatform = getWeixinPlatform.call(this)获取的是h5

  2. 从上面可以看出:接下来\uni-id-co\lib\third-party\index.js中,const oauthConfig = this.configUtils.getOauthConfig({ provider: 'weixin' })获取的配置是weixin-h5,实际上应该获取weixin-web才是正确的

uv_UI

uv_UI (作者) - 我与uniapp有着不解的缘分~

经过再次排查:

  1. 在\uni-id-co\lib\utils\weixin.js中的判断端的时候,这里直接把微信浏览器判断为h5了
  • uv_UI (作者)

    这样做的目的是微信浏览器中只能使用公众号内登录,应配置为 weixin-h5吗

    2026-04-29 09:56

uv_UI

uv_UI (作者) - 我与uniapp有着不解的缘分~

web端微信登录专题
登录的流程为:

应用页面,打开微信登录授权页链接(以get参数的方式传递appid和redirect_uri)
进入授权页面,用户同意授权得到code;以get参数的形式携带code,重定向至步骤1填写的redirect_uri
回到应用页面,拿到code值调用uni-id-co云对象的loginByWeiXin方法,得到token完成登录
appid说明:微信app内打开的网页,为公众号的appid。其他场景则为在微信开放平台创建的网站应用的appid。
redirect_uri说明:进入授权页面后返回的网站链接,此链接的域名需要先在服务后台配置,详情查看:回调域名的配置
示例代码已经在uni-id-pages插件中提供。

这是官方文档,原来就是这样实现的,但是这样不能满足我这种需求,我没有公众号,或者公众号未绑定开放平台,导致账号是隔离开的,这种情况就只能我只用源码兼容了

uv_UI

uv_UI (作者) - 我与uniapp有着不解的缘分~

最终解决方案:因为这个项目暂时没用到微信公众号,所以weixin-h5和weixin-web的appid和appsecret配置成一样的就解决啦!

要回复问题请先登录注册