微信开放平台openId和unionId

时间:2016-10-14 13:37:17

标签: oauth wechat

我想用微信实现登录。在阅读文档时,我遇到了两个不同的参数,其含义我不完全理解:openId和unionId。

有人可以解释一下这些内容到底是什么吗?据我所知,它应该是这样的:

  • openId - 用户的一些唯一ID,可能会不时更改

  • unionId - 用户的唯一ID,唯一一个始终相同的ID。相当于Google使用Google API登录时返回的唯一ID。

我在这里可以找到我阅读的文档:http://open.wechat.com/cgi-bin/newreadtemplate?t=overseas_open/docs/web/login/getting-user-profile#login_getting-user-profile

3 个答案:

答案 0 :(得分:7)

根据我的理解,用户的开放ID因网络应用程序而异,而联合ID则保持不变。例如,您有两个使用微信登录的应用程序:W1和W2。用户将为W1分别使用openid1,为W2分别使用oepnid2,但您可以使用用户的联合ID在应用程序中唯一标识他/她。

仅当您拥有多个网络/移动应用时,开放ID才会发生变化。

希望它有所帮助。感谢。

答案 1 :(得分:1)

“为什么任何人都想使用openID”-@dcsan提出的一个很好的问题。

从api而言的话,最大区别就是unionId需要openId和access_token去取得,也就是多了一个auth步骤。

从实用角度来看,openId更多起了一种数据匿名化的作用。

另外,据我了解,

openId = f(unionId,appId),其中f是一个哈希函数,等等。

更新,可能更像=

openid = f(userId, appId) 
unionid = f(userId, appOwnerId)

其中f是一个哈希函数

答案 2 :(得分:0)

当您的公司有多个官方帐户,同一个用户同时关注它们时,一个用户的开放ID就不同了。为了解决这个问题,微信开发了联合ID,以帮助识别不同的开放但相同的用户。