参照微信的oauth2流程图:https://blog.csdn.net/pansand...
我看网上很多人问为什么要有code + secret
换取access_token
这一步,回答都是说url
不安全,如果从url
直接返回access_token
容易被中间人盗用
我的疑惑是为什么不从url
返回access_token
,然后在服务端通过access_token + secret
的方式获取用户信息,这样即使access_token
被中间人获取到,他也拿不到服务器的secret
,所以我还是不能理解code
的必要性到底是啥
补充一下我想的具体流程
- 需要授权时,第三方应用跳转到微信提供的授权页,这一步和原流程一致
- 用户点击同意授权,微信授权页重定向到第三方应用页面,重定向的url拼接上参数(参数由微信拼接),为了和原流程区分,参数名就叫new_token
- 第三方应用获取到url上微信提供的new_token,将new_token发送给第三方应用的后端
- 第三方应用后端,用new_token + 之前和微信约定的secret,请求微信后端,获取微信用户信息
从 URL 直接返回 AccessToken?
从哪个 URL?
用户没授权你就能访问这个 URL 了?那用户授权还有啥用?不授权你不也能访问他的用户信息了?
用户授权了你才知道访问这个 URL,那不是一样还得需要一个
code
之类的东西,让 OAuth 服务器知道用户给你的应用点了授权?