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

如何撤销Xbox令牌?替换授权URL的authorize为revoke可行吗?

Xbox OAuth 权限撤销实现方法

首先明确:不能直接将https://xsts.auth.xboxlive.com/xsts/authorize中的authorize替换为revoke,Xbox Live的XSTS服务并未提供该路径的撤销接口,这样调用会直接返回错误。

正确的权限撤销流程需依托微软账户的OAuth 2.0体系实现,因为Xbox OAuth本质是基于微软账户生态的,具体步骤如下:

1. 准备核心参数

发起撤销请求前,需准备以下参数:

  • token:用户的Xbox访问令牌(或关联的微软账户访问令牌)
  • client_id:你的应用在微软开发者平台注册时获取的客户端ID
  • token_type_hint(可选):指定令牌类型,可选值为access_token或refresh_token,帮助端点快速定位令牌

2. 发送POST请求到撤销端点

向微软官方的OAuth撤销端点发送POST请求,请求格式如下:

POST https://login.microsoftonline.com/common/oauth2/v2.0/revoke HTTP/1.1
Content-Type: application/x-www-form-urlencoded

token=<用户的访问令牌>&client_id=<你的应用客户端ID>&token_type_hint=access_token

3. 处理响应结果

  • 请求成功时,端点返回200 OK状态码,无响应体,代表权限已成功撤销
  • 若令牌无效或已过期,会返回400 Bad Request,并附带具体错误信息

代码示例(JavaScript)

async function revokeXboxAccess(userToken, appClientId) {
  const formData = new URLSearchParams();
  formData.append('token', userToken);
  formData.append('client_id', appClientId);
  formData.append('token_type_hint', 'access_token');

  try {
    const response = await fetch('https://login.microsoftonline.com/common/oauth2/v2.0/revoke', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/x-www-form-urlencoded'
      },
      body: formData
    });

    if (response.ok) {
      console.log('Xbox访问权限已成功撤销');
      // 可添加前端提示逻辑,比如弹窗告知用户撤销成功
    } else {
      const errorDetail = await response.json();
      console.error('撤销失败:', errorDetail);
    }
  } catch (requestError) {
    console.error('请求出错:', requestError);
  }
}

注意事项

  • 必须存储用户的有效访问令牌或刷新令牌,否则无法发起撤销请求
  • 权限撤销后,对应令牌立即失效,用户需重新完成授权流程才能再次访问你的应用

内容的提问来源于stack exchange,提问作者Jose K J

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 08:57:07