如何在Azure应用目录登录中添加XboxLive.signin范围并获取Xbox Gamertag?
获取Xbox Gamertag的解决方案(Azure AD登录场景)
一、解决Azure应用配置中看不到Xbox权限的问题
Xbox Live相关权限属于Microsoft Graph委托权限,需按以下步骤添加:
- 登录Azure门户,进入你的应用注册页面
- 切换到「API权限」选项卡,点击「添加权限」
- 选择「Microsoft Graph」,再选择「委托权限」
- 在搜索框输入
XboxLive.signin,勾选该权限后点击「添加权限」 - 若应用面向组织账户,需点击「授予管理员同意」;若仅面向个人Microsoft账户,用户授权时会自动触发权限确认
二、修复AADSTS70011错误
报错原因是授权请求的scope参数格式错误,需注意:
scope必须是空格分隔的字符串,而非数组格式- 正确的scope示例:
user.read offline_access openid XboxLive.signin
授权请求URL示例
https://login.microsoftonline.com/common/oauth2/v2.0/authorize? client_id=你的客户端ID &response_type=code &redirect_uri=你的重定向URI &scope=user.read offline_access openid XboxLive.signin &response_mode=query
若使用SDK(如MSAL),需将权限数组转换为空格分隔的字符串传递,比如在JavaScript中:
const scopes = ['user.read', 'offline_access', 'openid', 'XboxLive.signin'].join(' ');
三、获取Gamertag的具体步骤
Microsoft Graph不会直接返回Gamertag,需通过Xbox Live API获取:
获取Xbox XSTS令牌与用户哈希
使用带有XboxLive.signin权限的access_token调用Xbox身份验证接口:POST https://user.auth.xboxlive.com/user/authenticate Content-Type: application/json { "Properties": { "AuthMethod": "RPS", "SiteName": "user.auth.xboxlive.com", "RpsTicket": "d=你的Access_Token" }, "RelyingParty": "http://xboxlive.com", "TokenType": "JWT" }响应中会包含
Token(XSTS令牌)和DisplayClaims.xui[0].uhs(用户哈希)调用Xbox Profile API获取Gamertag
使用上一步的结果请求用户配置:GET https://profile.xboxlive.com/users/me/profile/settings?settings=Gamertag Authorization: XBL3.0 x=用户哈希;XSTS令牌响应中
settings[0].value字段即为Gamertag
四、注意事项
- 确保应用注册的账户类型支持个人Microsoft账户(选择「任何组织目录中的账户和个人Microsoft账户」或「仅个人Microsoft账户」)
- 若用户没有关联的Xbox账户,Xbox Live API会返回对应错误,需提前处理这种情况
内容的提问来源于stack exchange,提问作者Harshil shrivastava
相关产品推荐
相关产品推荐

