如何撤销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:你的应用在微软开发者平台注册时获取的客户端IDtoken_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
相关产品推荐
相关产品推荐

