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

C#调用Mojang认证接口获取authToken返回403 Forbidden错误如何解决

403错误产生原因
  • 核心原因:你调用的https://authserver.mojang.com/authenticate是旧版Yggdrasil认证接口,仅支持未迁移的原Mojang账号登录。2021年Minecraft账号全量迁移到微软体系后,该接口已停止支持微软账号认证,迁移后的账号调用该接口会直接返回403。
  • 缺少请求头校验:即使你使用的是未迁移的遗留Mojang账号,当前代码未设置User-Agent请求头,Mojang服务端会拦截无合法标识的请求,直接返回403。
  • JSON请求体格式错误:代码通过字符串拼接构造JSON,如果用户名/密码包含双引号、转义符等特殊字符,会导致JSON结构异常,服务端解析失败也可能返回403。
  • 风控或账号限制:短时间内多次发起错误请求会触发服务端IP限流,或者账号本身存在封禁、异常状态,也会返回403错误。
解决方案
  • 优先适配微软OAuth认证流程
    所有迁移完成的微软账号必须走微软Azure AD OAuth 2.0认证链,流程为:
    1. 申请Azure AD应用权限,引导用户完成微软账号登录授权获取授权码
    2. 用授权码兑换微软访问令牌,再依次获取Xbox Live令牌、XSTS令牌
    3. 用XSTS令牌调用Minecraft服务端接口兑换最终的Minecraft访问令牌,即可完成登录
  • 兼容遗留Mojang账号的代码修改方案
    如果你仍需要兼容未迁移的账号,可对现有代码做以下修改:
    1. 添加合法User-Agent请求头:
    httpWebRequest.UserAgent = "Minecraft/1.20 (Windows; x64)";
    
    1. 替换手动拼接JSON的逻辑,使用JSON序列化库构造请求体,避免格式错误,示例用System.Text.Json:
    var requestBody = new 
    {
        agent = new { name = "Minecraft", version = 1 },
        username = username,
        password = password
    };
    string json = JsonSerializer.Serialize(requestBody);
    
    1. 添加异常捕获逻辑读取服务端返回的具体错误信息,方便精准定位问题:
    try
    {
        // 原有请求逻辑
    }
    catch (WebException ex)
    {
        using (var reader = new StreamReader(ex.Response.GetResponseStream()))
        {
            string errorDetail = reader.ReadToEnd();
            // 输出errorDetail即可查看服务端返回的具体错误原因
        }
    }
    
  • 提前验证请求有效性
    编码前可先用接口测试工具模拟请求,确认请求头、参数、接口可用性后再落地代码,减少调试成本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 15:42:04