You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用GitHub OAuth API兑换Token时遭遇404 'Not Found'错误

GitHub OAuth授权码兑换Token返回404 Not Found问题排查与解决

问题描述

调用GitHub OAuth接口https://github.com/login/oauth/access_token将授权码兑换为Token时,无论使用cURL还是Octokit v3.1.2的createOAuthUserAuth方法,均返回404错误响应:{"error":"Not Found"}。

已尝试操作

  • 直接发起cURL POST请求
  • 通过Octokit构造器调用createOAuthUserAuth方法

排查与解决步骤

1. 核对请求URL的准确性

确认请求URL完全为https://github.com/login/oauth/access_token,无拼写错误(如遗漏login路径、多写斜杠等)。

2. 确保请求方法与Content-Type合规

  • 必须使用POST方法,GET请求会直接返回404。
  • 请求头Content-Type必须设置为application/x-www-form-urlencoded,不能使用application/json。如果使用Axios等工具,需用URLSearchParams构造表单数据,避免自动转换为JSON格式。

3. 验证参数的有效性

  • client_id/client_secret:确认是从GitHub OAuth应用设置页面复制的完整、正确的值,无多余空格或换行符。
  • code:授权码为一次性有效,若此前已使用过该code兑换Token,需重新引导用户授权获取新的code。
  • redirect_uri:必须与GitHub OAuth应用设置中填写的授权回调URL完全一致,包括协议(http/https)、域名、路径及大小写。例如设置的是https://example.com/oauth/callback,则不能仅传https://example.com。

4. Octokit v3.1.2使用规范

Octokit v3的授权方法与旧版不同,需使用auth方法并指定正确参数:

import { Octokit } from "octokit";

const octokit = new Octokit();
try {
  const authResult = await octokit.auth({
    type: "oauth-user",
    clientId: "你的Client ID",
    clientSecret: "你的Client Secret",
    code: "用户授权码",
    redirectUrl: "你的回调URL", // 注意参数名是redirectUrl而非redirect_uri
  });
  console.log("Token获取成功:", authResult);
} catch (error) {
  console.error("Token获取失败:", error);
}

避免使用已废弃的方法,确保参数名与官方文档一致。

5. 排查网络环境

检查是否存在代理、防火墙或VPN拦截请求,尝试在无代理的网络环境下测试,排除网络层面的访问限制。

内容的提问来源于stack exchange,提问作者Saif

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 06:43:31