Heim > Fragen und Antworten > Hauptteil
微信登录,用户授权给第三方,第三方在获得授权码之前微信怎么判断是哪个用户授的权,还有请求accessToken时,只带了code,势必生成code的时候会有和用户相关的绑定信息,要不怎么去验code,只有code正确,才会生成相应的token,求大神指教,感觉理解还不到位
高洛峰2017-04-18 09:57:06
code是临时数据,由于是通过链接跳转传递给你的,所以这个参数不能是用户身份相关的数据,所以给你一个临时数据,然后你再用这个临时数据去换取代表用户身份的token。
怪我咯2017-04-18 09:57:06
微信授权需要你扫二维码,你扫码的时候微信会发送信息给服务器,这样服务器就知道是谁授的权了。
返回的code是服务器生成的唯一值,和用户信息一起保存在服务器上呢,微信当然可以分辨
PHPz2017-04-18 09:57:06
谢谢以上的回答,我看了一点 源码,是的确实有绑定关系,生成授权码时,微信认证服务器会判断是否登录,如果登录后,会生成这个用户相关的token(usernamepasswordtoken,这个token跟换的token没有关系,只是用来标识用户的),然后生成code,保存code、client_id、username三者的关系,然后返回code,当客户端去请求token时,会根据client_id、code验code的正确性,正确的话,微信认证服务器会获得当前用户,然后根据client_id、username、scop(如果scope不为空的话)生成authenicateId,再生成accessToken,保存authenicateId和accessToken的关系,最后removeCode,返回accessToken