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

如何用Xbox REST API及Python Requests获取调用者XUID?遇403错误求助

解决Xbox Live API调用403错误并获取XUID的问题

核心问题分析

你遇到的403错误主要源于两个问题:

  1. 授权头格式错误:XBL3.0 Token必须携带特定前缀才能被Xbox API识别。
  2. 代码逻辑与接口选择冗余:原代码使用的接口并非获取XUID的最优选择,且存在数据解析错误。

具体修复步骤

  • 修正Authorization头:XBL3.0 Token的授权头必须以XBL3.0 x=为前缀,原代码直接传入token字符串不符合API要求。
  • 更换高效接口:使用/users/me/profile/settings接口,仅请求Xuid字段,避免不必要的数据传输。
  • 修复数据解析错误:原代码尝试直接从response对象取xuid,实际XUID嵌套在返回的JSON结构中。

修正后的完整代码

import json
import requests

def getownerxuid():
    # 读取配置文件中的XBL Token
    with open('configs/realminfo.json') as temp_json_file:
        xbltoken = json.load(temp_json_file)["xbltoken"]
    
    # 目标接口:获取当前用户XUID
    url = "https://profile.xboxlive.com/users/me/profile/settings"
    headers = {
        "Authorization": f"XBL3.0 x={xbltoken}",  # 必须添加前缀
        "x-xbl-contract-version": "2"
    }
    params = {
        "settings": "Xuid"  # 仅请求XUID字段
    }

    response = requests.get(url, params=params, headers=headers)

    if response.status_code == 200:
        data = response.json()
        # 从返回的JSON结构中提取XUID
        xuid = data["profileUsers"][0]["settings"][0]["value"]
        print(f"XUID: {xuid}")
        return xuid
    else:
        print(f"请求失败,状态码: {response.status_code}")
        print(f"响应详情: {response.text}")  # 打印响应内容辅助排查

额外排查点

如果修复后仍返回403,需检查Token的权限范围:

  • 解码你的XBL3.0 Token,确认是否包含XboxLive.signin或XboxLive.profile权限。
  • Realms API的Token可能仅具备Realms相关权限,无法访问用户profile接口,此时需要重新获取包含profile权限的Token。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 00:03:16