OAuth 2.0 鉴权实战:使用 Apifox 调试接口的详细指南

OAuth 2.0 是一种授权框架,它可以让第三方应用程序在得到你的授权后,有限度地访问一些开放的个人信息。它被广泛用于互联网上的身份验证和授权机制。

OAuth 2.0 可以比作使用微信账号登录 Apifox:你扫码并授权后,Apifox 从微信获得一个访问令牌,这个令牌让 Apifox 获取你的部分信息(如昵称和头像)用于登录,无需单独设置账号密码,同时确保你的其他微信信息保持私密。这样一来,你就可以安全且便捷地使用微信账号在 Apifox 上工作。

OAuth 2.0 的运行流程可以用下图表示,其中,客户端代表一方,用户为另一方,认证服务器与资源服务器统一作为一方。

我们将通过一个微信登录的例子来解释上述步骤,并讲述如何在 Apifox 中调试。在这个例子中,我们用"网站"来指代客户端,用"微信"同时指代认证服务器和资源服务器。

OAuth 2.0 的实践:以微信登录为例

1 网站请求用户给予授权

如果你需要调用微信登录的接口,那么第一步是扫微信登录的二维码。这一步需要在网页上进行,还不需要使用 Apifox。

当用户点击网站上的「微信登录」按钮后,将会被导向到由微信官方提供的扫码登录页面,该页面实际访问的是微信的认证服务器。微信扫码登录页面形如下方的 URL:

perl 复制代码
https://open.weixin.qq.com/connect/qrconnect?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE

这里面参数的具体值,你需要到微信开发者中心查看。

当用户通过微信扫码并同意给网站授权时,就允许网站获取用户微信的昵称和头像等信息。这个授权过程由微信客户端和微信登录服务端处理,我们不需要关心。

用户一旦同意授权,浏览器便会自动跳转到预设的网址(即 redirect_uri 参数对应的网址),形如:

ini 复制代码
https://example.com/wechat/callback.do?code=CODE&state=3d6be0a40sssssxxxxx6624a415e

这个跳转页面里的内容其实不重要,重点在以上这个 URL 里。我们只需要关注其中的 code 参数,这个就是下一步申请微信登录令牌的关键。

我们把这个 URL 中包含的 code 复制出来,就完成了 Oauth 2.0 认证中的第一和第二步:用户授权,得到客户端授权 code。

接下来,我们就可以在 Apifox 中进行调试了。

2 网站向微信申请令牌

接下来,我们就需要向微信认证服务器申请令牌了。

你需要用 Apifox 访问微信认证服务器的 API,位于:api.weixin.qq.com/sns/oauth2/... 在调用该接口时,你需要携带以下参数,同理,这里面参数的具体值你需要到微信开发者中心查看:

我们可以在 Apifox 中对该接口进行调试并获取令牌。成功调用上述的接口后,微信认证服务器会验证相关信息的有效性。验证通过,便会收到一个令牌,该令牌包含在接口返回的 JSON 数据里。

以下是响应中各字段的解释:

将其存储在 Apifox 的环境变量中,以供取用。

以上就是 Oauth 认证过程中的第二步:向认证服务器发起令牌申请,并得到令牌(access_token)。

3 网站向微信申请用户信息

有了访问令牌,就可以用它向微信资源服务器请求用户资源,比如头像和昵称。

使用 Apifox 访问微信资源服务器的 API,位于 api.weixin.qq.com/sns/userinf... 在调用该接口时,你需要携带以下参数,这里面的参数值就是上一步返回的 access_token 和 openid,我们已经保存在环境变量中了,可以直接用 {{access_token}} 引用:

我们可以在 Apifox 中对该接口进行调试,发送请求后,微信资源服务器将验证所提交的令牌。如果令牌无误,服务器便会允许访问并返回用户信息,例如昵称和头像,正如下图展示的那样。

观察 API 返回的 JSON 数据,用户昵称位于 nickname 字段,而头像地址则在 headimgurl 字段。现在,你可以利用这些信息在网站上展示用户的微信昵称和头像。

调试 OAuth 2.0 接口大致就是上面的步骤,总共分三步:

第一步,在登录提供方(如微信或谷歌等)的页面上操作授权,获得授权 code;

第二步,在 Apifox 里用授权页返回的 code 申请 access_token;

第三步,在 Apifox 里用 access_token 请求更多信息。

使用 Apifox 调试接口能够帮助你更加清晰地看到上下游所需要传递的各项参数,优化调试体验。一旦在 Apifox 中成功将完整链路跑通,后端开发者就可以开始编写代码来实现整个业务流程,减少了在开发过程中进行频繁验证的麻烦。

相关推荐
程序员cxuan33 分钟前
Grok Build 被众人唾骂,结果老马把它开源了
人工智能·后端·程序员
从零开始的代码生活_34 分钟前
C++ 继承详解:访问控制、对象模型、菱形继承与设计取舍
开发语言·c++·后端·学习·算法
Conan在掘金1 小时前
�鸿蒙报错速查:Cannot find name 'require',禁用 require(),根因 + 真解法
后端
隔窗听雨眠1 小时前
Spring Boot在云原生时代的编程范式革新研究
spring boot·后端·云原生
一朵小花1 小时前
记一次Docker 容器 NFS 文件写入延迟排查过程
后端
FF2501_940228583 小时前
Grid 构建月历网格:7 列模板 + 日期占位算法
后端·华为·harmonyos·鸿蒙系统
神奇小汤圆3 小时前
线程池的 DiscardPolicy 为什么是「静默杀手」?一个生产事故的完整复盘
后端
大鸡腿同学3 小时前
个人博主 AI 剪辑实操:口播视频 3 步出片,省 80% 剪辑时间
后端
其美杰布-富贵-李3 小时前
Spring Boot 工程开发全流程说明
java·spring boot·后端
xianjixiance_3 小时前
HarmonyOS应用开发实战:萌宠日记 - 整体架构设计与技术选型解析
后端