使用Microsoft REST API将Xbox Live GamerTag转换为XUID-Java
我有一个Java应用程序,它需要能够为Minecraft Basefick Edition获取用户输入的gamertag,并将其转换为给定帐户的XUID,以便我可以将其存储起来,以便稍后用于白名单和参考目的 我一直在浏览Microsoft REST API文档,寻找一种可以让我这样做的方法,但我能找到的最接近的方法是: 它仍然需要XUID作为输入,而不是作为输出提供 是否有任何方法可以将玩家代号的给定字符串输入转换为关联帐户的XUID,或者如果Java应用程序不存在此类帐户,则转换为null?我已经用纯的、自包含的使用Microsoft REST API将Xbox Live GamerTag转换为XUID-Java,java,xbox-live,Java,Xbox Live,我有一个Java应用程序,它需要能够为Minecraft Basefick Edition获取用户输入的gamertag,并将其转换为给定帐户的XUID,以便我可以将其存储起来,以便稍后用于白名单和参考目的 我一直在浏览Microsoft REST API文档,寻找一种可以让我这样做的方法,但我能找到的最接近的方法是: 它仍然需要XUID作为输入,而不是作为输出提供 是否有任何方法可以将玩家代号的给定字符串输入转换为关联帐户的XUID,或者如果Java应用程序不存在此类帐户,则转换为null?
bash+curl+sed
编写了一篇文章
它的灵感来源于抄袭/浓缩自from的,,您可能应该改用它。他们的API是如此之好,涵盖了如此之多的奥秘,以至于微软;如果您的项目的核心功能依赖于微软的Xbox Live API,那么为了这个库,您应该考虑将项目切换到Python
简而言之,要使用此API,您必须:
- 如果您的应用程序可以绑定到要授权该应用程序的用户系统上的
,或者您得到了他们的合作(特别是:他们可以从浏览器中的URL将localhost:8080
参数粘贴到程序中),您可以跳过此步骤,使用code
,并完全忽略client\u id=00000000 48093EE3
。(在这种情况下,您甚至不需要Azure帐户。)client\u secret
Xbox Live.signin
和Xbox Live.offline\u访问
范围
https://user.auth.xboxlive.com/user/authenticate
https://xsts.auth.xboxlive.com/xsts/authorize
以获取
https://profile.xboxlive.com
用于您感兴趣的实际端点,例如/users/gt({gamertag})/profile/settings
(在属性“id”
)中包含XUID,作为十进制字符串)
*对于这一点,应该是这样的:
从异步IO导入以arun运行
从系统导入argv
从操作系统导入路径,环境
导入子流程
从aiohttp导入客户端会话
从xbox.webapi.api.client导入XboxLiveClient
从xbox.webapi.authentication.manager导入AuthenticationManager
从xbox.webapi.authentication.models导入OAuth2TokenResponse
异步定义gamertags_to_xuids(gamertags,client_id=environ[“client_id”],client_secret=environ[“client_secret”],token_jar=path.join(environ[“HOME”],“.local”,“share”,“xbox”,“tokens.json”):
断言len(玩家代号)>=1
全球会议
auth\u mgr=AuthenticationManager(会话、客户端id、客户端密钥“”)
等待更新令牌(授权管理器、令牌\u jar)
xbl\u client=XboxLiveClient(身份验证管理器)
ids=[]
对于gamertag中的gamertag:
profile=等待xbl_客户端。profile.通过游戏代号(游戏代号)获取游戏代号
附加(int(profile.profile\u用户[0].id))
xuids=[f“{id:016X}”表示id中的id]
返回xuids
异步def刷新令牌(身份验证管理器、令牌\u jar):
将open(token_jar,“r+”)作为f:
auth_mgr.oauth=OAuth2TokenResponse.parse_raw(f.read())
等待授权管理器刷新令牌()
f、 搜索(0)
f、 截断()
f、 写入(auth_mgr.oauth.json())
异步def amain(参数):
全球会议
subprocess.run([“xbox authenticate”],check=True)#TODO:避免此系统调用
与ClientSession()作为会话异步:
将等待玩家标记返回到xuids(args)
def main(args=argv[1:]):
返回阿伦(阿明(阿格斯))
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
对于main()中的xuid:
打印(xuid)