首页  >  问答  >  正文

java - 微信登录oauth2.0授权相关问题

微信登录,用户授权给第三方,第三方在获得授权码之前微信怎么判断是哪个用户授的权,还有请求accessToken时,只带了code,势必生成code的时候会有和用户相关的绑定信息,要不怎么去验code,只有code正确,才会生成相应的token,求大神指教,感觉理解还不到位

PHP中文网PHP中文网2714 天前652

全部回复(4)我来回复

  • 高洛峰

    高洛峰2017-04-18 09:57:06

    code是临时数据,由于是通过链接跳转传递给你的,所以这个参数不能是用户身份相关的数据,所以给你一个临时数据,然后你再用这个临时数据去换取代表用户身份的token。

    回复
    0
  • 黄舟

    黄舟2017-04-18 09:57:06

    code可以理解是用户的授权,token可以理解为是第三方给调用方该用户授权。

    回复
    0
  • 怪我咯

    怪我咯2017-04-18 09:57:06

    微信授权需要你扫二维码,你扫码的时候微信会发送信息给服务器,这样服务器就知道是谁授的权了。
    返回的code是服务器生成的唯一值,和用户信息一起保存在服务器上呢,微信当然可以分辨

    回复
    0
  • PHPz

    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

    回复
    0
  • 取消回复