微信openid 服务器备案,微信生态中的 openId、unionID和业务系统中的ID
在进行微信生态相关的开发的时候,经常会遇到一个术语:openID。openID 在微信生态下几乎无处不在:你想要识别用户身份?需要 openID
你需要给用户推送消息?需要 openID
除了 openID 以外,在开发时,还会有另外一个术语:unionID,当你思考多个微信生态下的应用互相协作之时,就会遇到 unionID。
此外,我们自己开发的业务系统中,还会有一个自己业务系统中的 ID,那如何理解这三个 ID 呢?
业务系统中的 ID
一般来说,我们会在自己的业务系统中存储一份用户信息,在存储用户信息的时候,用户信息会在数据库中有一个名为 ID 的主键,后续我们在进行各项开发的时候,都会使用这个 ID 来指代对应的用户。从而在开发过程中,随时可以获取到用户的一些信息。
我们会在这个 ID 对应的数据库记录中存储一些用户的数据,比如用户名、用户的头像、用户的昵称、用户的备注等等。
openID 微信应用中的用户唯一 ID
openID 是微信应用中的唯一 ID, 这里的微信应用指的是微信生态下的应用,不仅仅是小程序,也表示公众号、小商店等应用。
每一个用户在访问了某一个小程序后,就会获得自己在这个小程序中的唯一 ID。这个唯一 ID 和两个因素有关:是哪个小程序?是哪个用户?
也正是因为这两个因素,导致同一个用户在不同的小程序中的 openID 不同,所以说,openID 是微信应用中的用户唯一 ID,也仅在这个场景中有用。你在小程序拿到一个用户的 openID,意味着它只能在这个小程序中用于定位某个用户,你把这个 openID 拿到另外一个小程序/公众号中去使用,就无法定位到当前的用户。
unionID 微信应用群中的用户唯一 ID
微信生态下除了小程序,还有订阅号、服务号。你肯定希望自己的订阅号、服务号、小程序可以共用一套用户系统,这样用户在进入这三处地方,就可以获得一致的体验,比如订阅号的用户在进入小程序后,可以看到自己在订阅号中做过的事情。
这个时候,你就需要借助微信应用群中的用户唯一 ID —— unionID。
这里需要注意关键词「微信应用群」。你的公众号和你的小程序并不是天然成为一个微信应用群的。想要达成一个微信应用群,你需要在微信开放平台将你的公众号和小程序之间进行关联。在完成关联以后,微信就会在符合要求的情况下,给予每次请求赋予一个 unionID 的属性。
具体的要求如下:调用接口 wx.getUserInfo,从解密数据中获取 UnionID。注意本接口需要用户授权,请开发者妥善处理用户拒绝授权后的情况。
如果开发者帐号下存在同主体的公众号,并且该用户已经关注了该公众号。开发者可以直接通过 wx.login + code2Session 获取到该用户 UnionID,无须用户再次授权。
如果开发者帐号下存在同主体的公众号或移动应用,并且该用户已经授权登录过该公众号或移动应用。开发者也可以直接通过 wx.login + code2Session 获取到该用户 UnionID ,无须用户再次授权。
用户在小程序(暂不支持小游戏)中支付完成后,开发者可以直接通过getPaidUnionId接口获取该用户的 UnionID,无需用户授权。注意:本接口仅在用户支付完成后的5分钟内有效,请开发者妥善处理。
小程序端调用云函数时,如果开发者帐号下存在同主体的公众号,并且该用户已经关注了该公众号,可在云函数中通过 cloud.getWXContext 获取 UnionID。
小程序端调用云函数时,如果开发者帐号下存在同主体的公众号或移动应用,并且该用户已经授权登录过该公众号或移动应用,也可在云函数中通过 cloud.getWXContext 获取 UnionID。
如何使用 openID、unionID 和 ID
如果你希望你的业务可以实现,在 A 中的操作,可以在 B 中看到,那么你就需要借助于 unionID,将不同的用户关联起来,在数据库设计方面,你可以在用户表中设定几个属性: application_a_openid 、application_b_openid 和 unionid。
在执行查询的时候,判断是否存在对应 unionId 的用户,并进行关联。
总结
微信开发生态中有不少的 ID,看似纷乱,但如果你可以把他们以某一个特定的场景来思考,就会更好理解。
微信openid 服务器备案,微信生态中的 openId、unionID和业务系统中的ID相关推荐
- linux中600是什么权限,linux系统中文件的权限
查看文件权限的语句: 在终端输入: ls -l xxx.xxx (xxx.xxx是文件名) 那么就会出现相类似的信息,主要都是这些: -rw-rw-r-- 一共有10位数 其中: 最前面那个 - 代表 ...
- 如何将USBKey中的证书注册到Windows系统中、分享一个 证书 C++安装
USBKey 是一种 USB 接口的硬件设备.如坚石诚信的 ET199Auto ,内置 16 位国外进口高性能智能卡芯片,有一定的存储空间,可以存储用户的私钥以及数字证书,利用 USBKey内置的RS ...
- CSP开发基础--如何将USBkey中的证书注册到Windows系统中
本文转自和讯博客坚实诚金 http://zyf860825.blog.hexun.com/61812512_d.html USBKey是一种USB接口的硬件设备.如坚石诚信的ET199Auto,内置1 ...
- 业务系统中的Word文档如何转成pdf
在业务系统中Word文档转pdf是常见的需求,Word文档格式用于业务文档的编辑过程,Pdf文档格式用于流转分发的过程,通过zOffice的Open API可以方便的把Word文档转成Pdf,同时可以 ...
- 微信分身服务器,苹果微信分身版
苹果微信分身版 定制技巧一.怎样去做做seo?出现seo,一看就知道.seo如同天上掉馅饼,做到专注优化,那么就是正确的seo,后面的会做出***好的seo. 打造微信中的自我推广.商业协同等.微信公 ...
- 怎样打开微信定位服务器地址,微信位置服务功能,能知道对方位置,你们知道怎么用吗!...
我们是经常使用微信了,实际微信隐藏着一个位置的一个功能,不管在什么地方,都可以实时知道对方的位置信息,尤其是家里的老人和孩子,一定要学会该怎么操作呢?带大家一起来看一下.微信究竟隐藏着哪些实用的功能呢 ...
- 在业务系统中寻求技术含量
从进入互联网公司开始工作起,每个人都在问自己,CRUD 到底有什么技术含量? 别觉得 CRUD 只是业务工程师的问题,无论你在写什么程序,基本上都是在和数据打交道,除了读就是写.只不过读写的时候还会附 ...
- simulink中mpc模块怎么使用_Controllogix系统中ILX34MBS485模块使用
本文主要介绍ILX34-MBS485模块在罗克韦尔Controllogix系统中的使用.此模块属于第三方产品,可接入Controllogix系统中,实现Modbus RTU协议的串行通信. 场景:在C ...
- linux中profile文件作用,解析Linux系统中bashrc和profile文件的作用区别
使用终端ssh登录Linux操作系统的控制台后,会出现一个提示符号(例如:#或~),在这个提示符号之后可以输入命令,Linux根据输入的命令会做回应,这一连串的动作是由一个所谓的Shell来做处理. ...
最新文章
- HDU4081(次小生成树)
- CAS Tomcat配置
- 使用ASP.NET Abstractions增强ASP.NET应用程序的可测试性
- boost::function_types::is_member_function_pointer的用法测试程序
- Python 3.X 要使用urllib.request 来抓取网络资源。转
- 函数计算助力闲鱼构建云端一体化变成模式
- Centos5.5安装使用Xen
- 2017一季度JAVA面试题锦集
- 如何使用FF的Firebug组件中的net工具查看页面元素加载消耗时间
- Linux Shell中有三种引号的用法
- 春运公益片“情满回家路”上线 顺风车等出行方式再被呼吁
- 区块链和数据科学:如果同时应用这两种技术,将会实现什么?
- 前端测试框架Jest系列教程 -- 简介
- swift 图片压缩
- R语言对数据进行非参数检验
- OrCAD DSN文件无故消失解决办法
- 简单处理点击EditText外部区域关闭软键盘
- iOS中 断点下载详解 韩俊强的博客
- 大话数据结构——烂笔头
- 计算机硬盘分区win7,win7如何磁盘分区 教您win7磁盘分区
热门文章
- GDPR条例的12项重点分析
- Spark RDD distinct 算子
- vue3.0在线编辑器codemirror开发
- CVF2020邻域自适应/语义分割:FDA: Fourier Domain Adaptation for Semantic SegmentationFDA:用于语义分割的傅立叶域自适应算法
- web上传图片到七牛云服务器
- 如何三平台win/安卓/ios同步日历日程
- 7-6 程序员买西瓜 (5分)
- 乐观锁和悲观锁区别以及使用场景
- c++函数模板--(函数模板的定义)
- poi 读取excel合并单元格两种方式