问题描述
我正在编写一个程序,该程序可以在您指定的任何时间更改您的Mojang用户名(即名称“ tom”在09:05:39可用,因此您可以将该程序设置为在该时间将您的名称更改为“ tom”时间)。为此,您需要一个承载令牌。我可以登录minecraft.net并使用EditThisCookie进行访问,但是我希望能够让程序等到名称删除后的一分钟内自动收集代理和不记名令牌,以备不时之需。在半夜可用,或者我很懒。我不确定为什么获取载体令牌的功能不起作用。我引用了this来编写此代码。
def getAT():
jsonForAT = json.dumps({"agent":{"name":"minecraft","version":1},"username":email,"password":password,"clientToken":""})
headersForAT = {'Content-Type': 'application/json'}
requestForAT = requests.post('https://authserver.mojang.com/authenticate',data=jsonForAT,headers=headersForAT)
pullATRequestData = requestForAT.json()
AT = pullATRequestData["accesstoken"]
return AT
我真的很困惑,因为当我使用它时,出现401错误,但是当我手动获得令牌时,程序可以工作。
解决方法
我也遇到了同样的问题。然后,我意识到Minecraft / Mojang帐户存在安全性问题。如果您的功能正在获取不记名令牌,而您的问题是在发布名称更改请求时拒绝访问:
首先请确保正确设置其格式: headers = {'Authorization':f“ Bearer {TOKEN}” 注意“承载者”和{TOKEN}之间的空格
2nd:出于某种原因,Mojang需要您向其安全挑战端点发送“获取”请求。 您无需对返回的数据进行任何操作。 当您手动获得令牌时,我假设您的浏览器自动发送了此get请求,这就是它起作用的原因。如果您使用的是代理服务器,则可能需要发送带有安全性问题答案的帖子请求,请查看API链接以获取文档。
例如:
res = requests.get(
"https://api.mojang.com/user/security/challenges",headers={"Authorization": f"Bearer {TOKEN}"},)
https://wiki.vg/Mojang_API 转到“安全问题解答流程”
下的底部