先弄明白以下概念:
- 微信开发者账号 —— 用来登录微信开发者平台的账号
- 微信应用 —— 同一账号可以在微信开发者平台申请多个应用,假设我们在开发知乎,我们会在微信开发者后台申请两个应用,分别是『知乎网站』和『知乎App』
- 微信用户 —— 一般理解下的微信用户,假设我们有微信用户 summer 作为测试。
场景说明:
- Summer 在『知乎网站』使用微信登录后,会获取到 OpenID 值为 o6_bmjrPTlm6_2sgVt7hMZOPfL2M 和 UnionID o6_bmasdasdsad6_2sgVt7hMZOPfL
- Summer 在『知乎App』使用微信登录后,会获取到 OpenID 值为 o6_bmjrPTlm6_2sgVt7hMZOPfXXX 和 UnionID o6_bmasdasdsad6_2sgVt7hMZOPfL
- 两个应用中,退出登录后重新使用微信登录,获取的 OpenID 和 UnionID 值都与第一次的值一致。
解释:
- OpenID 是最对『微信应用』的用户唯一值,同一个『微信开发者账号』下的不同应用中,使用同一个『微信用户』登录,此值会不一样;
- UnionID 是针对『微信开发者账号』的用户唯一值,同一个『微信开发者账号』下的不同应用中,使用同一个『微信用户』登录,此值是一致的。
结论:
如果你在开发网站的微信登录,请数据库里记录 UnionID ,并使用 UnionID 来区分微信用户。如果你不这么做,假如后面网站新增了一个允许微信登录的 App 时,你将无法辨别用户。
扩展链接