zoukankan      html  css  js  c++  java
  • 解决部分小程序无法获取UnionId的问题

    问题背景

    通过观察数据,发现有一部分用户是无法获取到UnionId的

    也就是接口返回的参数中不包含UnionId参数

    看了微信文档的解释,只要小程序在开放平台绑定,就一定会分配UnionId

    网上也有用户遇到这样的情况,没有解决

    问题影响

    使用微信小程序成功授权以后,下次在公众号中授权或在App中使用微信授权,无法识别是同一个微信用户,可能会出现一个微信用户绑定不同App用户的情况。

    UnionID机制

    微信对UnionId机制的原文解释

    如果开发者拥有多个移动应用、网站应用、和公众帐号(包括小程序),可通过unionid来区分用户的唯一性,因为只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号(包括小程序),用户的unionid是唯一的。换句话说,同一用户,对同一个微信开放平台下的不同应用,unionid是相同的。

    同一个微信开放平台下的相同主体的App、公众号、小程序,如果用户已经关注公众号,或者曾经登录过App或公众号,则用户打开小程序时,开发者可以直接通过wx.login获取到该用户UnionID,无须用户再次授权。

    注意: 后边这句话的描述

    用户关注过公众号,或者曾经登录过App或公众号,则用户打开小程序时,开发者可以直接通过wx.login获取到该用户UnionID

    即:如果用户没有关注过公众号,或者没有登陆过App,通过wx.login是无法获取到该用户UnionID,只能通过wx.getUserInfo来获取UnionId

    经验证,系统不存在UnionId的小程序用户都是没有关注公众号或未在App中使用微信授权的用户

    解决方案

    获取小程序UnionId应该以wx.getUserInfo的UnionId为主

    wx.getUserInfo需要用户授权,产品方面,需要考虑用户拒绝授权的处理流程

  • 相关阅读:
    使用 Promise.all 同时发起多个请求
    vite 开发 Cesium 程序最佳配置实践
    【linux学习】使用grep命令获取过滤的数据作为下个命令的入参
    记一次k8s depolyment失败处理
    powerdesigner导出excel数据字典
    vue 时间格式
    ASP.NET MVC4 跨域配置
    Win10系统中切换虚拟桌面的快捷键如何设置
    不顾一切最简NHinbernate配置并读写数据库
    Windows time_wait过多解决办法
  • 原文地址:https://www.cnblogs.com/raincedar/p/8509611.html
Copyright © 2011-2022 走看看