为什么OAuth2不用access_token + secret的方式获取用户信息?

参照微信的oauth2流程图:https://blog.csdn.net/pansand...

我看网上很多人问为什么要有code + secret换取access_token这一步,回答都是说url不安全,如果从url直接返回access_token容易被中间人盗用

我的疑惑是为什么不从url返回access_token,然后在服务端通过access_token + secret的方式获取用户信息,这样即使access_token被中间人获取到,他也拿不到服务器的secret,所以我还是不能理解code的必要性到底是啥

补充一下我想的具体流程

  1. 需要授权时,第三方应用跳转到微信提供的授权页,这一步和原流程一致
  2. 用户点击同意授权,微信授权页重定向到第三方应用页面,重定向的url拼接上参数(参数由微信拼接),为了和原流程区分,参数名就叫new_token
  3. 第三方应用获取到url上微信提供的new_token,将new_token发送给第三方应用的后端
  4. 第三方应用后端,用new_token + 之前和微信约定的secret,请求微信后端,获取微信用户信息
阅读 3.6k
2 个回答

从 URL 直接返回 AccessToken?

从哪个 URL?

用户没授权你就能访问这个 URL 了?那用户授权还有啥用?不授权你不也能访问他的用户信息了?

用户授权了你才知道访问这个 URL,那不是一样还得需要一个 code 之类的东西,让 OAuth 服务器知道用户给你的应用点了授权?

code是需要用户授权拿到的,授权一次有一个 code

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题