微信开发中的openid和unionid相关总结
.
在处理小程序登录过程中,经常遇到 openid 和 unionid 的相关概念,以下做相关对比说明:
微信开发者平台相关官方文档:
登录流程说明:
https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html
登录接口api:
https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/user-login/code2Session.html
一. 定义
openid:
定义:openid 是用户在某个微信公众号或小程序中的唯一标识。
作用范围:openid 是针对每个微信公众号或小程序独立的。同一个用户在不同的公众号或小程序中会有不同的 openid。同一个小程序或者公众号中,登录的微信号不变的情况下,请求获取到的openid是不变的。(如:在该小程序注销后,使用同一个微信号重新注册登录,openid还是相同的)
获取方式:通过微信公众号或小程序的接口(如 wx.login( wx.login接口官方文档) 或 getUserInfo (getUserInfo接口官方文档)等)获取用户的 openid。
unionid:
定义:unionid 是用户在微信平台上的全局唯一标识。
作用范围:unionid 是针对同一个微信用户在所有微信公众号、小程序以及微信支付等场景下的唯一标识。同一个用户在所有平台上的 unionid 是相同的。
获取条件:只有当用户关注了公众号或使用了同一开发者的多个应用(公众号、小程序等)时,才能获取到 unionid。此外,获取 unionid 需要用户授权。
二. 使用场景
openid:
适用场景:主要用于单个公众号或小程序内部的用户管理。例如,记录用户的行为数据、用户权限管理、消息推送等。
局限性:由于 openid 是针对每个应用独立的,如果用户在多个应用中使用,开发者无法直接关联这些用户。
unionid:
适用场景:适用于跨应用的用户管理。例如,开发者有多个公众号或小程序,希望在不同应用之间共享用户数据,或者进行统一的用户画像分析。
优势:通过 unionid,开发者可以在不同应用之间识别同一个用户,实现数据同步和共享。
三. 注意事项
隐私保护:unionid 涉及用户隐私,因此获取 unionid 需要用户明确授权。
数据同步:如果开发者有多个应用,建议使用 unionid 进行用户数据的同步和关联。
兼容性:在某些情况下,用户可能未授权,因此开发者需要做好兼容处理,确保即使没有 unionid,应用也能正常运行。