微信小程序openID unionID的区别

微信小程序openID unionID的区别微信小程序账户系统:openid和unionid。 此篇文章可供开发和产品了解用、可用于了解产品设计和技术设计。

这是我参与更文挑战的第10天,活动详情查看: 更文挑战

1. 前言

    该话题来源于测试组的一个问题: 同一个微信号, 同时在微信开发者工具和真机上访问小程序,有可能是代表两个不同的用户吗?
眉头一紧、发现事情没这么简单, 故梳理此文章以解惑!

2. 微信账户体系

2.1 appID

appID: 小程序的唯一标识.
可在微信公众平台-开发-开发管理-开发设置中获取appID,如下图所示.
image.png
这上面也有个AppSecret、主要用于解密数据;若没生成过AppSecret、则点击生成即可(需要管理员的同意);生成后记得及时保存该信息、忘记了就只能重置哦! image.png
用途:

  • 打开另外一个小程序;
2.2 openID

用户在同一个小程序下的唯一标识.
openID = 用户微信号&&公众平台appID(2个数据加密得到的字符串) 故可得出如下结论:

  • 同一个微信号、不管用什么工具(微信开发者工具/真机), 都是同个openID.(这也回答了测试童鞋的问题)
  • 同一用户在不同小程序有不同的openID
2.3 unionID

如果开发者拥有多个移动应用、网站应用和公众帐号,可通过获取用户基本信息中的unionid来区分用户的唯一性,因为同一用户,对同一个微信开放平台下的不同应用(移动应用、网站应用和公众帐号),unionid是相同的。
微信开放平台地址: open.weixin.qq.com/
我们先列举个业务场景:
比如某多多平台、有公众号、有小程序、有App、那你如何确保同一用户登陆不同端、用户数据一致呢?比如A用户在公众号端看到账户内有2张优惠券、然后再小程序端打开发现我的账户却一张券都没有、客诉不?
而unionID的出现就是为了解决此问题的、实现账号的互通.
unionID: 用户微信号&开放平台appID(两个数据加密得到的字符串) 注意事项:

  • 同一个微信开放平台账号下的移动应用、公众号、小程序等、用户的unionID是唯一的、But却有不同的openID;
  • 必须要先将公众号跟小程序绑定在同一个开放平台下、才能得到’同一’用户判定-> 即同一unionID;
  • 一个公众号或小程序只能绑定一个开放平台(unionID的生成机制决定的、若绑定多个则会造成混乱)

3. 如何获取?

作为技术人、不能纯理论、技术干货也要来点、接下来演示下如何获取openID和unionID.

// wxml
<view bindtap="loginFn">戳我去登陆</view>

// js
loginFn: function () {
  const _this = this
  wx.login({
    success: function (res) {
     console.log('wx.login回调',res)
     if (res.code) {
       //发起网络请求
      // code: 就是登录凭证(code)
      _this.getSession(res.code)
     }
   }
  })
},
// 该接口一般是前端负责传code、然后由后端同学去调用此接口的; 
// 这里为了演示整个流程、故前端直接调用
getSession (code) {
  wx.request({
    url: 'https://api.weixin.qq.com/sns/jscode2session', 
    /** * 参数说明: * appid跟secret可由微信公众平台处获取; * js_code为wx.login()拿到的code登陆凭证; * grant_type不用改动; */
    data: {
            appid: 'wx87175f7067feb659',
            secret: '5f0148582cf565f4b90cd6cb16b0e2ed',
            js_code: code,
            grant_type: 'authorization_code'
    },
    header: {
            'content-type': 'application/json' // 默认值
    },
    success (res) {
        console.log('jscode2session回调',res)
    }
 })
}

先看看控制台打印了什么: image.png 再看看network请求: image.png
你会发现这里只返回了session_key跟openid、怎么没获取到unionid字段呢?

session_key: 回话密钥
unionid: 用户在开放平台的唯一标识符、只有满足一定条件的情况下才会返回.
openid: 用户唯一标识

获取unionid需要满足的条件:

  • 微信开发平台上有绑定小程序;
  • 微信开发平台账号已完成开发者资质认证;

4. 待解决

本来想熟悉测试下整个流程的、但是发现个人开发者没法正常使用微信开放平台, 问题描述如下:
个人开发者已成功注册微信开放平台、但一定要填写企业信息.
官方建议: 个人主体账号,按实际信息先完善下,例如企业名称和主体信息这一栏,先填写个人名称;
不过需要提示注意下,后续如果进行认证了,这个页面的企业信息需要改成跟认证主体一致的主体名称. 申请大概还需要填这么些信息、内容过于繁琐复杂、期待对个人开发者开放. image.png

5. 写在最后

若有错误之处, 恳请留言, 定会及时更正!
若觉着对您有帮助的话恳请点个赞或着收藏吧!

今天的文章微信小程序openID unionID的区别分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/18088.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注