使用Microsoft REST API Java将XboxLive玩家代号转换为XUID
我有一个Java应用程序,它需要能够为Minecraft Basefick Edition获取用户输入的gamertag,并将其转换为给定帐户的XUID,这样我就可以将其存储起来,以便以后用于白名单和参考目的
我一直在浏览Microsoft REST API文档,寻找一种方法来实现这一点,但我能找到的最接近的东西是:
它仍然需要XUID作为输入,而不是作为输出提供
有什么方法可以将玩家代号的给定字符串输入转换为关联帐户的XUID,或者如果Java应用程序不存在这样的帐户,则转换为null
# 1 楼答案
我用纯粹的、独立的
bash+curl+sed
写了一篇illustrative proof-of-concept implementation它的灵感来源于Team OpenXbox的Xbox-Webapi抄袭/浓缩而来的,,你可能应该用它来代替*。他们的API非常好,涵盖了微软的很多奥秘;如果你的项目依赖微软的Xbox Live API作为其核心功能,那么就值得为这个库而强烈考虑将你的项目切换到Python
简而言之,要使用此API,似乎必须:
注册一个Application in Azure
localhost:8080
,或者您得到了他们的合作(特别是:他们能够从浏览器中的URL将code
参数粘贴到程序中),您可以跳过这一步,使用client_id=0000000048093EE3
,并完全忽略client_secret
。(在这种情况下,您甚至不需要Azure帐户。)李>让任何**Xbox Live用户通过OAuth2向您的应用程序提供
Xboxlive.signin
和Xboxlive.offline_access
作用域使用此授权和承载令牌从
https://user.auth.xboxlive.com/user/authenticate
获取所谓的“用户令牌”使用该令牌对
https://xsts.auth.xboxlive.com/xsts/authorize
进行身份验证以获得“XToken”使用该标记对
https://profile.xboxlive.com
进行身份验证,以获取您感兴趣的实际端点,例如/users/gt({gamertag})/profile/settings
(其中包括属性"id"
处的XUID,作为一个十进制字符串)(**很明显,如果你访问的是特权端点,比如那些查看私人信息或修改用户帐户设置的端点,你会对需要谁的授权以及需要请求什么范围有额外的要求;但是,对于从gamertag到XUID查找的一般情况,任何用户只需登录即可。)
*对于这个,应该是这样的: