必须先注册应用获取 Client ID 和 Client Secret,再构造授权 URL 引导用户同意授权,通过回调获取 code 后向令牌端点请求access_Token,最后在请求头中携带 Bearer 令牌调用 API,并可使用 refresh_token 续期。

如果您需要通过 python 调用受保护的 API接口,而该接口要求使用 OAuth 进行身份验证,则必须按照 OAuth 协议获取访问令牌。以下是实现 Python 调用 API 并完成 OAuth 认证的具体流程。
一、注册应用并获取凭证
在使用 OAuth 认证之前,需在目标服务提供商平台注册一个应用,以获得客户端 ID(Client ID)和客户端密钥(Client Secret),这些信息用于后续的身份验证过程。
1、登录到目标 API 提供商的开发者控制台,例如 google Cloud console 或gitHub Developer Settings。
2、创建一个新的应用或项目,并填写必要的回调 URL(Redirect URI)。
立即学习“Python 免费学习笔记(深入)”;
3、提交后系统将生成 Client ID 和Client Secret,请妥善保存。
二、构造授权请求 URL
客户端需要引导用户跳转至授权服务器的登录页面,允许其授予访问权限。此步骤生成包含必要参数的授权链接。
1、拼接授权端点 URL,通常格式为:https://authorization-server.com/oauth/authorize。
2、添加查询参数:response_type=code、client_id、redirect_uri 以及 scope(所需权限范围)。
3、可选地加入 state 参数以防止 csrf 攻击,确保安全性。
三、处理授权回调并获取授权码
用户同意授权后,授权服务器会重定向到预先设定的回调地址,并附带一个临时的一次性授权码(Authorization Code)。
1、配置本地服务器监听指定的 redirect_uri 路径,接收携带 code 参数的 GET 请求。
2、从请求中提取code 值,该值将在下一步用于交换访问令牌。
3、验证 state 参数是否与发起请求时一致,确保请求合法性。
四、用授权码换取访问令牌
客户端需向令牌端点发送 POST 请求,使用上一步获取的授权码来换取访问令牌(Access Token)。
1、向令牌 URL(如https://authorization-server.com/oauth/token)发送 POST 请求。
2、包含以下表单数据:grant_type=authorization_code、code、redirect_uri、client_id、client_secret。
3、成功响应将返回jsON 格式的数据,其中包含access_token、token_type、expires_in 及可选的 refresh_token。
五、使用访问令牌调用 API
获取有效的 access_token 后,即可将其用于请求受保护的资源 API。
1、在 HTTP 请求头中设置 Authorization 字段为 Bearer {access_token}。
2、发起对目标 API 的 GET 或 POST 请求,例如调用用户信息接口 https://api.example.com/v1/user。
3、处理返回的响应数据,注意检查 状态码 是否为 200,并解析 json 内容。
六、刷新访问令牌
当 access_token 过期时,若存在 refresh_token,则可用其获取新的访问令牌,避免重新走完整授权流程。
1、向令牌端点发送 POST 请求,设置 grant_type 为 refresh_token。
2、提供 refresh_token、client_id 和 client_secret 作为请求体参数。
3、成功响应将返回新的 access_token 和可选的新 refresh_token,替换旧值继续使用。