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

Mojang authenticate接口的标准请求Payload格式及400错误排查

问题原因分析
  • 参数序列化错误:调用requests.post时指定了请求体格式为JSON,但直接将Python字典传给了data参数,requests默认会将字典序列化为表单格式而非JSON字符串,导致服务端无法解析请求体返回400。
  • 认证接口过时:https://authserver.mojang.com/authenticate为已废弃的旧Mojang账号认证接口,仅支持未完成微软迁移的旧Mojang账号登录,所有已迁移至微软的账号均无法通过该接口完成认证。
  • 原代码中uuid变量名与导入的uuid模块重名,属于不规范的变量命名,虽然不会直接触发错误,但存在潜在的命名冲突风险。
修复方案

旧未迁移Mojang账号认证代码修复

修正参数序列化逻辑后即可正常请求,代码如下:

import requests
import json
from uuid import uuid4

# 避免和uuid模块重名,修改变量名
client_token = uuid4().hex

payload = {
    "agent": {
        "name": "Minecraft",
        "version": 1
    },
    "username": "你的旧Mojang账号邮箱",
    "password": "旧Mojang账号密码",
    "clientToken": client_token,
    "requestUser": True
}

# 方案1:直接使用json参数传字典,requests会自动序列化并添加正确的请求头
response = requests.post("https://authserver.mojang.com/authenticate", json=payload)
# 方案2:手动将字典转为JSON字符串再传给data参数
# response = requests.post("https://authserver.mojang.com/authenticate", headers={"content-type":"application/json"}, data=json.dumps(payload))

# 打印状态码和返回的JSON内容,不管是200还是错误码都可以拿到对应详情
print("响应状态码:", response.status_code)
print("响应内容:", response.json())

已迁移微软账号适配说明

已迁移至微软的账号无法再使用旧Mojang认证接口,需要更换为微软OAuth2.0认证流程,核心步骤如下:

  1. 注册微软Azure应用获取客户端ID
  2. 引导用户完成微软账号授权,拿到授权码
  3. 使用授权码换取微软访问令牌
  4. 依次换取Xbox Live令牌、XSTS身份令牌
  5. 最终调用Minecraft官方接口换取游戏访问令牌和用户档案信息

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 06:54:04