欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

问一个qq互联登录的问题:一个开发者账号下的多应用之间统一用户

程序员文章站 2024-02-10 21:49:28
...
我用过微信公众号登录,然后知道了微信开放平台有一个unionid,只要开发者绑定了自己的公众号或者其他应用,那么对于同一个微信用户,在当前开发者账号下的unionid是相同的,这样有利于当开发者拥有多个应用时统一账号。

比如:我有A,B两个公众号,还有一个移动应用C,网页应用D,四个应用就会有四个appid,当一个微信用户在A下授权登录,就会有一个相对于Aappid的一个唯一的openid(同理B,C,D授权时就会有其它三个不同的openid)那么当他在B上授权时就识别不了之前A的账号了,这样就达不到我统一用户的效果,因为A,B都是我的啊。

现在有了unionid之后这个问题就解决了,授权时除了返回openid还会返回unionid,那么据此就可以判断出此微信用户之前是用A受过权的,那么就能识别,无需再让B授权一次,让其直接登录就可以了。这样就达到了我有多个应用时统一账号的效果了。

呵~ 微信这个方案是极好的。

接着我看了QQ登录,发现没有这个unionid

于是我看了其他开放平台,人人,新浪微博这些授权不是返回的openid,而是会得到他们真实UID,那这样就不存在一个开发者账号下面多个应用不统一的问题了。

我现在的我问题:

1:为什么微信,qq,要用openid而不是像微博那样用真实uid呢?而非要自己挖个坑呢?

2:虽然微信,qq用openid挖坑了,为什么微信开放平台用unionid填了这个坑,而qq互联没有呢?

3:qq互联挖了坑却没有填,那我们怎么去解决这个问题,打通一个开发者账号下的多个应用授权互通呢?

补充:其实登录授权,绑定授权原理就是将授权后获得第三方平台返回的“uid”(这里引号)与我们自己的uid进行关联,以此来达到绑定的目的,但是qq,微信不像微博他们那样,偏偏返回个openid,所以才会有这个帖子的问题。

附几个相关链接:
http://mp.weixin.qq.com/wiki/4/9ac2e7b1f1d22e9e57260f6553822520.html
http://wiki.connect.qq.com/获取用户openid_oauth2-0
http://wiki.open.qq.com/wiki/API3.0文档
http://open.weibo.com/wiki/Oauth2/access_token

以上是我浅薄的理解,毕竟实战经验还不强,希望有经验的大神来批评指正,谢谢。

回复内容:

我用过微信公众号登录,然后知道了微信开放平台有一个unionid,只要开发者绑定了自己的公众号或者其他应用,那么对于同一个微信用户,在当前开发者账号下的unionid是相同的,这样有利于当开发者拥有多个应用时统一账号。

比如:我有A,B两个公众号,还有一个移动应用C,网页应用D,四个应用就会有四个appid,当一个微信用户在A下授权登录,就会有一个相对于Aappid的一个唯一的openid(同理B,C,D授权时就会有其它三个不同的openid)那么当他在B上授权时就识别不了之前A的账号了,这样就达不到我统一用户的效果,因为A,B都是我的啊。

现在有了unionid之后这个问题就解决了,授权时除了返回openid还会返回unionid,那么据此就可以判断出此微信用户之前是用A受过权的,那么就能识别,无需再让B授权一次,让其直接登录就可以了。这样就达到了我有多个应用时统一账号的效果了。

呵~ 微信这个方案是极好的。

接着我看了QQ登录,发现没有这个unionid

于是我看了其他开放平台,人人,新浪微博这些授权不是返回的openid,而是会得到他们真实UID,那这样就不存在一个开发者账号下面多个应用不统一的问题了。

我现在的我问题:

1:为什么微信,qq,要用openid而不是像微博那样用真实uid呢?而非要自己挖个坑呢?

2:虽然微信,qq用openid挖坑了,为什么微信开放平台用unionid填了这个坑,而qq互联没有呢?

3:qq互联挖了坑却没有填,那我们怎么去解决这个问题,打通一个开发者账号下的多个应用授权互通呢?

补充:其实登录授权,绑定授权原理就是将授权后获得第三方平台返回的“uid”(这里引号)与我们自己的uid进行关联,以此来达到绑定的目的,但是qq,微信不像微博他们那样,偏偏返回个openid,所以才会有这个帖子的问题。

附几个相关链接:
http://mp.weixin.qq.com/wiki/4/9ac2e7b1f1d22e9e57260f6553822520.html
http://wiki.connect.qq.com/获取用户openid_oauth2-0
http://wiki.open.qq.com/wiki/API3.0文档
http://open.weibo.com/wiki/Oauth2/access_token

以上是我浅薄的理解,毕竟实战经验还不强,希望有经验的大神来批评指正,谢谢。

既然供应商的API没有提供我们需要的效果,那就没办法了,而且在这个问题上我们也无法伪造。
毕竟openid这个值是唯一的并且是即时产生并验证的,无法给四个应用都传递一个通用的openid。
回到你问题:
1、“为何微博无坑而qq,有坑吗”

没有为何,新浪的程序员设计的是返回uid,而qq微信设计的是2返回openid

2、“微信填坑而QQ没有”

两个产品团队不同,没有必然性。我很久没用微信开放平台了,unionid是什么时候出现的我不知道。如果是最近出现的,那么我相信qq也会很快填坑

3、“qq如何解决多应用互通”

就目前的几分钟思考应该是无解的,既然qq需要openid去验证,而这个openid是即使产生的,那应该是没有办法的。

当然具体情况还要看他们的文档

鄙人陋见

qq的id就是qq号吧 为了防止通过id在其他渠道获取用户的个人信息被

猜测。。