- 微信小程序用户授权
背景 微信小程序只要与用户产生交互,都无法逃离用户信息管理,用户信息授权又是用户信息管理的最基础的服务。如想要深入学习用户授权,需要先了解一下 openID 和 UnionID 的区别。 openID 和 UnionID openID: openID 是微信生态下`应用的唯一标识`,开发者可以通过微信小程序(微信公众号)提供的静默授权拿到用户的 openID,这两个 openID 是独立的,无法关联到同一个用户。UnionID:UnionID 是微信生态下`用户的唯一标识`,开发者可以通过 UnionID 对不同应用对用户进行唯一绑定。现在我们只需要记住 openID 是应用的唯一标识,UnionID 是用户的唯一标识就 ok。 用户授权的目标就是获取用户的唯一标识,便于我们的应用更好的管理用户信息,授权分为静默授权和阻断授权。 静默授权 静默授权,顾名思义就是开发者可以在用户无感中的情况下,获取到用户唯一标识(这里是单个应用的),通过这个唯一标识映射到我们系统的 userId,有了 userId,与后端服务的交互全都通了,最简单的用户管理应该哦了。 静默授权的过程是这样的: 调用 wx.login() 获取 临时登录凭证code 调用 auth.code2Session 接口,换取用户唯一标识 openID 调用本地后台服务,将 openID 映射到本地的 userId详情过程可以参考微信官方文档提供的交互图 [猛击查看](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html) 对于只开发微信小程序这一个应用来说,拿到 openID 已经够用了,应用唯一标识就能很好的区分用户。 在实际应用中,我们会用到微信生态中的微信小程序、微信公众号等等,这个时候想在多个应用中唯一标识同一个用户,就需要用到 UnionID。 UnionID可以通过下面途径获取,摘自官方文档:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/union-id.html 调用接口 wx.getUserInfo,从解密数据中获取 UnionID。注意本接口需要用户授权,请开发者妥善处理用户拒绝授权后的情况。如果开发者帐号下存在同主体的公众号,并且该用户已经关注了该公众号。开发者可以直接通过 wx.login + code2Session 获取到该用户 UnionID,无须用户再次授权。如果开发者帐号下存在同主体的公众号或移动应用,并且该用户已经授权登录过该公众号或移动应用。开发者也可以直接通过 wx.login + code2Session 获取到该用户 UnionID ,无须用户再次授权。用户在小程序(暂不支持小游戏)中支付完成后,开发者可以直接通过getPaidUnionId接口获取该用户的 UnionID,无需用户授权。注意:本接口仅在用户支付完成后的5分钟内有效,请开发者妥善处理。小程序端调用云函数时,如果开发者帐号下存在同主体的公众号,并且该用户已经关注了该公众号,可在云函数中通过 cloud.getWXContext 获取 UnionID。小程序端调用云函数时,如果开发者帐号下存在同主体的公众号或移动应用,并且该用户已经授权登录过该公众号或移动应用,也可在云函数中通过 cloud.getWXContext 获取 UnionID。阻断授权 阻断授权顾名思义就是需要用户参与才能完成的授权操作,一般是为了获得用户手机号和用户信息。 用户手机号 具体可以参考访问文档提供的API: [猛击查看](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html) 用户信息 具体可以参考访问文档提供的API: [猛击查看](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/user-info/wx.getUserInfo.html) 真实案例 我们用户体系是这样设计的,userId 和 token 共同决定用户的有效性。 静默授权的设计方案[图片] 手机号授权设计方法[图片] 用户信息授权[图片] 不同的业务场景处理方式会有差异,这个也只是针对当下我们的业务场景,希望对你有所有帮助,也欢迎大家一起交流沟通学习。
2020-03-15 - 社区每周|小程序疫情专区开放申请、社区每周反馈(02.10-02.14)
各位微信开发者: 以下是上周我们在社区收到的问题反馈、需求的处理进度,希望同大家一同打造小程序生态。 小程序疫情专区开放申请全国新冠肺炎疫情牵动人心,为了帮助用户获取疫情期间所需资讯与服务,小程序将开辟“疫情专区”,现开放开发者申请入驻。 详情请参考:《小程序疫情专区开放申请》 上周问题反馈和处理进度(02.10-02.14)已修复的问题今天云开发的实时推送的问题 查看详情 小程序头像上传报错的问题 查看详情 云开发正式环境报错 查看详情 微信API生成小程序码返回 msg:hint 的问题 查看详情 文档错别字 查看详情 已修复待发布editor 组件 format 方法无法使用的问题 查看详情 修复中的问题微信语音的时候看不了微信游戏广告的问题 查看详情 小游戏用最新基础库后,egret 引擎会运行不了的问题 查看详情 开发工具好像被电信劫持,游戏界面被广告遮盖的问题 查看详情 API 缺少功能点标题的问题 查看详情 用小游戏制作工具上传后,图片素材和部分按钮失效的问题 查看详情 小游戏排行榜获取不到用户的头像和昵称,只有托管的用户数据的问题 查看详情 好友排行榜 getFriendCloudStorage 数据包里面的头像昵称为空的问题 查看详情 Canvas.getContext执行不符合预期, 执行后偶尔发生间歇性卡顿现象的问题 查看详情 文档中存在无效的链接的问题 查看详情 订阅消息添加模板复选框 UI 问题 查看详情 wxgl load image fail 0 的问题 查看详情 跟前面一段描述“参考链接(请在微信客户端中打开此链接体验): scope 为 snsapi_” 没有换行的问题 查看详情 无法点击预览小程序,查看不了调试器的问题 查看详情 InnerAudioContext.play调用后, paused没有立即设置为false 查看详情 预览报错 查看详情 小游戏体验版在使用一阵后,扫码试用的时候发现掉帧 ,重影,卡顿的问题 查看详情 腾讯小微 Linux接入 蓝牙配网部分内容缺失 查看详情 live-push组件 在背景已经暂停的情况下,bindbgmprogress 还是会返回进度变化 查看详情 腾讯小微 Linux接入 设备APP使用流程部分没有对应内容 查看详情 flexdbListTables loading failed 查看详情 es6相关的 polyfill 可参考文档 链接404 查看详情 为什么开发工具的云开发控制端加载集合失败 查看详情 点击预览出现问题,提示文件已存在 查看详情 华为用户截屏失败 查看详情 部分苹果手机,子域加载微信头像,提示不在后台可信域名中 查看详情 小游戏二次打开会黑屏 查看详情 laya 运行小游戏突然出现红屏无法复现 查看详情 小程序码接口 {"errcode":-206,是什么原因 查看详情 获取小程序二维码(getwxacodeunlimit),接口不稳定,随机返回errorcode=-1 查看详情 文档的图片更新问题 查看详情 微信开放文档中错别字的问题 查看详情 文档错别字 查看详情 需求反馈跟进迭代中editor获得用户选中文字的需求 查看详情 需求评估中放开5个小程序限制的需求 查看详情 提供 wx.d.ts 的需求 查看详情 建议将weui weuijs 同时纳入社区 查看详情 建议:wx.showLoading 支持自定义背景颜色或者自定义背景图片的需求 查看详情 小程序客服会话中发送一个小程序链接,会直接返回小程序,但不能实现页面跳转的需求 查看详情 添加视频后不支持打开此类文件,为什么打不开视频的需求 查看详情 功能建议 用户反馈能不能添加小程序版本的需求 查看详情 【建议】Feature Request是否可以增加一个wx.deep() 的 API 的需求 查看详情 建议MapContext.translateMarker->animationEnd 加参数的需求 查看详情 Text组件不支持 css :empty 选择器的需求 查看详情 关于订阅消息的需求 查看详情 企业微信企业后台是否存在如下API接口的需求 查看详情 微信团队 2020.02.18
2020-02-18