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

关于Xbox Creators Program官方REST API鉴权与Web调用的技术咨询

Xbox Live官方REST API鉴权与调用指南(Web应用/Python/JS)

核心鉴权流程(绕过XSAPI wrapper)

Xbox Live REST API的鉴权本质是通过Microsoft Account(MSA)OAuth + Xbox身份服务(XSTS)获取有效令牌,步骤如下:

1. 获取MSA OAuth 2.0令牌

让用户通过MSA账号登录你的Web应用,获取access_token。需要先在Azure AD注册应用,并配置以下Xbox Live相关scope:

  • XboxLive.signin
  • XboxLive.offline_access(可选,用于令牌刷新)

2. 交换Xbox用户身份令牌

用MSA令牌调用Xbox身份验证端点,获取用户哈希和用户身份令牌:

POST https://user.auth.xboxlive.com/user/authenticate
Content-Type: application/json

{
  "Properties": {
    "AuthMethod": "RPS",
    "SiteName": "user.auth.xboxlive.com",
    "RpsTicket": "d={MSA_ACCESS_TOKEN}"
  },
  "RelyingParty": "http://auth.xboxlive.com",
  "TokenType": "JWT"
}

从响应中提取Token(Xbox用户身份令牌)和DisplayClaims.xui[0].uhs(用户哈希)。

3. 获取Xbox Live访问令牌

用上述用户身份令牌和用户哈希调用XSTS端点,生成最终API访问令牌:

POST https://xsts.auth.xboxlive.com/xsts/authorize
Content-Type: application/json

{
  "Properties": {
    "SandboxId": "RETAIL",
    "UserTokens": ["{XBOX_USER_TOKEN}"]
  },
  "RelyingParty": "https://xboxlive.com",
  "TokenType": "JWT"
}

响应中的Token即为API调用所需的令牌,格式为Authorization: XBL3.0 x={USER_HASH};{XSTS_TOKEN}。

Python实现示例

import requests

# 替换为实际获取的MSA令牌
msa_token = "YOUR_MSA_ACCESS_TOKEN"

# 获取Xbox用户令牌
auth_response = requests.post(
    "https://user.auth.xboxlive.com/user/authenticate",
    json={
        "Properties": {
            "AuthMethod": "RPS",
            "SiteName": "user.auth.xboxlive.com",
            "RpsTicket": f"d={msa_token}"
        },
        "RelyingParty": "http://auth.xboxlive.com",
        "TokenType": "JWT"
    }
).json()
xbox_user_token = auth_response["Token"]
user_hash = auth_response["DisplayClaims"]["xui"][0]["uhs"]

# 获取XSTS令牌
xsts_response = requests.post(
    "https://xsts.auth.xboxlive.com/xsts/authorize",
    json={
        "Properties": {
            "SandboxId": "RETAIL",
            "UserTokens": [xbox_user_token]
        },
        "RelyingParty": "https://xboxlive.com",
        "TokenType": "JWT"
    }
).json()
xsts_token = xsts_response["Token"]

# 调用示例API:获取当前用户游戏标签
headers = {"Authorization": f"XBL3.0 x={user_hash};{xsts_token}"}
profile_response = requests.get(
    "https://profile.xboxlive.com/users/me/profile/settings?settings=Gamertag",
    headers=headers
).json()
print(profile_response)

JavaScript(Node.js)实现示例

const axios = require('axios');

async function getXboxAuthToken(msaToken) {
    // 获取Xbox用户令牌
    const authRes = await axios.post('https://user.auth.xboxlive.com/user/authenticate', {
        Properties: {
            AuthMethod: 'RPS',
            SiteName: 'user.auth.xboxlive.com',
            RpsTicket: `d=${msaToken}`
        },
        RelyingParty: 'http://auth.xboxlive.com',
        TokenType: 'JWT'
    });
    const xboxUserToken = authRes.data.Token;
    const userHash = authRes.data.DisplayClaims.xui[0].uhs;

    // 获取XSTS令牌
    const xstsRes = await axios.post('https://xsts.auth.xboxlive.com/xsts/authorize', {
        Properties: {
            SandboxId: 'RETAIL',
            UserTokens: [xboxUserToken]
        },
        RelyingParty: 'https://xboxlive.com',
        TokenType: 'JWT'
    });
    const xstsToken = xstsRes.data.Token;

    return {
        authHeader: `XBL3.0 x=${userHash};${xstsToken}`,
        userHash
    };
}

// 使用示例
getXboxAuthToken('YOUR_MSA_ACCESS_TOKEN').then(token => {
    axios.get('https://profile.xboxlive.com/users/me/profile/settings?settings=Gamertag', {
        headers: { Authorization: token.authHeader }
    }).then(res => console.log(res.data));
});

创作者计划权限说明

已加入Xbox Creators Program的应用,只要在Azure AD中配置了正确的Xbox Live权限,即可调用大部分公开REST API(如用户资料、好友列表、成就等)。部分敏感API需在Xbox开发者门户额外申请权限。

注意事项

  • 严格遵守Xbox Live服务条款,避免API滥用
  • API存在速率限制,需合理控制请求频率
  • 令牌有效期有限,需利用MSA的refresh_token实现自动刷新逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 11:03:27