Minecraft Wiki

除另有声明,转载时均必须注明出处若簡繁轉換出錯,請以遊戲內為準请勇于扩充与修正内容有兴趣逛逛我们的微博沟通交流,欢迎到社区专页需要协助,请在告示板留言

了解更多

Minecraft Wiki
Advertisement

Mojang APIMojang提供的「應用程式編程接口」,允許使用者使用自編程式檢索玩家資料,它適用於第三方啟動器開發人員、伺服器運營商和外掛開發人員。

所有查詢目前限制為每10分鐘600次[1]。對於沒有購買遊戲的註冊帳戶,也可以進行部分資訊的查詢。

伺服器的請求與響應[]

伺服器能接受很多請求,如果沒有特殊說明,對於具有負載的請求伺服器有下面的限制:

  • 請求頭中的Content-Type必須是application/json。如果不是,伺服器將返回HTTP狀態碼415。
  • 如果請求中要求負載,則負載必須是一個有效的JSON文字。如果不是,伺服器將返回HTTP狀態碼400。

如果請求成功,伺服器會做出如下的響應:

  • 一個成功的HTTP狀態碼(2XX)。
  • 返回一個空的負載(這時伺服器返回狀態碼204)或是一個JSON文字。

如果請求失敗,伺服器會返回一個非2XX的HTTP狀態碼並返回形式如下方的負載:

  • 根標籤
    •  error:對於錯誤的簡短介紹。
    •  errorMessage:錯誤資訊。
    •  cause:錯誤原因。

下面列出了一些常見的錯誤,在下文中不再重複說明。

HTTP狀態碼 錯誤(error) 錯誤具體資訊(errorMessage) 錯誤說明
400 IllegalArgumentException (與具體API有關) 請求中包含了錯誤或無效的參數。
MismatchedInputException 請求負載中的JSON文字不滿足API要求的格式或請求負載不是有效的JSON文字。
JsonParseException
401 (返回空負載) (返回空負載) API要求使用訪問令牌,但是請求頭中沒有包含Authorization或請求中的訪問令牌無效。
Unauthorized The request requires user authentication API要求使用訪問令牌,但是請求頭中沒有包含Authorization
403 ForbiddenOperationException Forbidden 訪問令牌無效。
404 Not Found The server has not found anything matching the request URI 伺服器找不到請求的URI。
405 Method Not Allowed The method specified in the request is not allowed for the resource identified by the request URI 接收到了錯誤請求方法的請求。
415 Unsupported Media Type The server is refusing to service the request because the entity of the request is in a format not supported by the requested resource for the requested method 不支持的媒體類型,即請求頭Content-Type不是API要求的類型。

取得玩家資訊[]

取得玩家資訊的API都不需要身份驗證得到的訪問令牌,部分API可以查詢沒有購買遊戲的註冊帳號。

取得玩家的UUID[]

輸入

玩家的名稱(不區分大小寫)。

GET請求

https://api.mojang.com/users/profiles/minecraft/<玩家名称>

響應
  • 根標籤
    •  id:玩家的UUID
    •  name:正確大寫的玩家名稱。
    •  legacy:如果此帳號沒有遷移到Mojang帳號,輸出中包含此項。
    •  demo:如果是沒有購買遊戲的註冊帳號,輸出中包含此項。
示例

https://api.mojang.com/users/profiles/minecraft/jeb_
提供玩家jeb_的UUID。API的響應沒有空格和換行符,此處為使結構清晰而進行格式化處理:

 {
   "name": "jeb_",
   "id": "853c80ef3c3749fdaa49938b674adae6"
 }
錯誤資訊
  • 如果沒有命名為這個名字的玩家,返回HTTP狀態碼404。

批量取得玩家UUID[]

負載

一個儲存小於10個的玩家名稱字串的JSON列表,玩家名稱不區分大小寫。

POST請求

https://api.mojang.com/profiles/minecraft

響應
  • 給定玩家的所有UUID列表。對於不存在的玩家名稱,將不返回任何結果。
    • 玩家名稱。
      •  id:玩家的UUID。
      •  name:正確大小寫的玩家名稱。
      •  legacy:如果此帳號沒有遷移到Mojang帳號,輸出中包含此項。
      •  demo:如果是沒有購買遊戲的註冊帳號,輸出中包含此項。
示例

發送["jeb_","notch"]

 [
   {
     "id": "853c80ef3c3749fdaa49938b674adae6",
     "name": "jeb_"
   },
   {
     "id": "069a79f444e94726a5befca90e38aaf5",
     "name": "Notch"
   }
 ]
錯誤資訊
HTTP狀態碼 錯誤(error) 錯誤具體資訊(errorMessage) 錯誤說明
400 CONSTRAINT_VIOLATION size must be between 1 and 10 請求負載的JSON列表為空。
請求負載的JSON列表中元素數量大於10個。
Invalid profile name 請求負載的JSON列表中含有空字串。

取得玩家的外觀和披風[]

輸入

玩家的UUID以及簽名的請求。可以在一分鐘後最早重複對給定UUID的查詢。

GET請求

https://sessionserver.mojang.com/session/minecraft/profile/<UUID>
https://sessionserver.mojang.com/session/minecraft/profile/<UUID>?unsigned=false

響應
  • 根標籤
    •  id:玩家的UUID
    •  name:正確大寫的玩家名稱。
    •  legacy:如果這個帳號是一個舊的Minecraft帳戶,這項才存在。
    •  properties:玩家屬性的列表。
      •  name:玩家屬性的名稱。到目前為止只有textures(玩家紋理)這一屬性。
      •  signature:只有在請求unsigned=false時,使用Yggdrasil私鑰的簽名才會作為Base64字串傳遞。
      •  valueBase64字串,其中包含玩家所有的紋理(外觀和披風)。解密後的字串內容如下:
        • 紋理對象。
          •  timestampUnix時間戳,以毫秒為單位,時間為調用紋理資料的時間。
          •  profileId:玩家的UUID,不帶連字元。
          •  profileName: 玩家名稱。
          •  signatureRequired: 只有在請求unsigned=false時才存在。
          •  textures:紋理。
            •  SKIN外觀紋理。如果這名玩家沒有自訂外觀,這項不存在。
              •  url:外觀紋理的URL連結。
              •  metadata:可選。外觀的元資料。
                •  model:固定值slim。當外觀模型為Alex時這一項才存在,模型為Steve則無該元資料。
            •  CAPE披風紋理。如果這名玩家沒有披風,這項不存在。
              •  url:披風紋理的URL連結。預設沒有披風,僅當Mojang在玩家的帳戶資料中輸入了披風時,才會顯示披風。
示例

https://sessionserver.mojang.com/session/minecraft/profile/853c80ef3c3749fdaa49938b674adae6
返回如下結果:

 {
   "id": "853c80ef3c3749fdaa49938b674adae6",
   "name": "jeb_",
   "properties":
   [
     {
       "name": "textures",
       "value": "ewogICJ0aW1lc3R..."
     }
   ]
 }

其中 value使用Base64解碼之後的內容為:

{
  "timestamp" : 1653838459263,
  "profileId" : "853c80ef3c3749fdaa49938b674adae6",
  "profileName" : "jeb_",
  "textures" : {
    "SKIN" : {
      "url" : "http://textures.minecraft.net/texture/7fd9ba42a7c81eeea22f1524271ae85a8e045ce0af5a6ae16c6406ae917e68b5"
    },
    "CAPE" : {
      "url" : "http://textures.minecraft.net/texture/9e507afc56359978a3eb3e32367042b853cddd0995d17d0da995662913fb00f7"
    }
  }
}
錯誤資訊
HTTP狀態碼 錯誤(error) 錯誤具體資訊(errorMessage) 錯誤說明
204 (返回空負載) (返回空負載) 此UUID不代表任何玩家。
400 (無) Not a valid UUID: <輸入的參數> URI中的UUID無效。

Mojang身份驗證[]

對於Mojang帳號,要用下面的API進行身份驗證。身份驗證都使用了https://authserver.mojang.com這個伺服器。

驗證並取得訪問令牌[]

驗證的請求次數很嚴格,在幾秒內僅能請求3次。

負載
  • 根標籤
    •  agent:遊戲資訊。
      •  name:遊戲名稱。固定值Minecraft
      •  version:版本。固定值1。
    •  username:帳號名稱,是一個電子郵件地址。對於未遷移的帳號,可以是玩家名稱。
    •  password:帳號密碼。
    •  clientToken:用戶端令牌,可選參數。所有的請求都要用統一的用戶端令牌。啟動器應該在第一次執行時生成一個令牌,並且需要在以後的請求中使用它。如果請求中不提供用戶端令牌,那麼伺服器會隨機生成一個令牌返回給用戶端,用戶端應該儲存這個令牌並用於之後的請求,但是這樣做會讓用戶端之前獲得的訪問令牌失效。
    •  requestUser:響應是否包含user對象,可選參數,預設為false
POST請求

/authenticate

響應
  • 根標籤
    •  user:帳號資訊,只有當請求中requestUsertrue時才存在。
      •  username:帳號名稱,是一個電子郵件地址。對於未遷移到Mojang帳號的帳號是玩家名稱。
      •  properties:帳號屬性。
        • :一項屬性。
          •  name:屬性名稱,目前只有preferredLanguageregistrationCountry
          •  value:屬性的值。當 namepreferredLanguage時為語言;當 nameregistrationCountry時為註冊時的國家資訊。
      •  id:帳號的遠程ID,是一個16進位的字串。
    •  clientToken:用戶端令牌。
    •  accessToken訪問令牌
    •  availableProfiles:可用的玩家配置資訊。
      • :一項配置資訊。
        •  name:玩家名稱。
        •  id:玩家的UUID。
    •  selectedProfile:現在正在使用的玩家配置資訊。
      •  name:玩家名稱。
      •  id:玩家的UUID。
錯誤資訊
HTTP狀態碼 錯誤(error) 錯誤具體資訊(errorMessage) 錯誤說明
403 ForbiddenOperationException Invalid credentials. Account migrated, use email as username. 帳號已經遷移。
Invalid credentials. Invalid username or password. 帳號名或密碼錯誤。
Invalid credentials. 嘗試登入次數過於頻繁。
Forbidden 帳號名或者密碼不符合要求。
410 ResourceException Gone (410) - The requested resource is no longer available at the server and no forwarding address is known 帳號已經遷移到Mircosoft帳號。
GoneException

刷新訪問令牌[]

負載
  • 根標籤
    •  accessToken:訪問令牌,在請求之後這個令牌將會失效。
    •  clientToken:用戶端令牌,要與驗證時的令牌一致。
    •  selectedProfile:現在正在使用的玩家配置資訊。
      •  id:玩家的UUID。
      •  name:玩家名稱。
    •  requestUser:響應是否包含 user,可選參數,預設為false
POST請求

/refresh

響應
  • 根標籤
    •  accessToken:新的有效的訪問令牌。
    •  clientToken:用戶端令牌。
    •  selectedProfile:現在正在使用的玩家配置資訊。
      •  id:玩家的UUID。
      •  name:玩家名稱。
    •  user:帳號資訊,只有當請求中 requestUsertrue時才存在。
      •  username:帳號名稱,是一個電子郵件地址。對於舊的Minecraft帳號是玩家名稱。
      •  id:帳號的遠程ID,是一個16進位的字串。
      •  properties:帳號屬性。
        •  name:屬性名稱,目前只有preferredLanguageregistrationCountry
        •  value:屬性的值。當 namepreferredLanguage時為語言;當 nameregistrationCountry時為註冊時的國家資訊。
錯誤資訊
HTTP狀態碼 錯誤(error) 錯誤具體資訊(errorMessage) 錯誤說明
403 ForbiddenOperationException Invalid token. 無效的訪問令牌。
Token does not exist. 用戶端令牌和當時請求此訪問令牌的用戶端令牌不一致。

檢查訪問令牌有效性[]

負載
  • 根標籤
    •  accessToken:要查詢的訪問令牌。
    •  clientToken:用戶端令牌,可選參數。如果提供了用戶端令牌,那麼它要和驗證時的令牌一致。
POST請求

/validate

響應

如果令牌還有效那麼伺服器會返回HTTP狀態碼204。

錯誤資訊
HTTP狀態碼 錯誤(error) 錯誤具體資訊(errorMessage) 錯誤說明
403 ForbiddenOperationException Invalid token. 無效的訪問令牌。
Token does not exist. 用戶端令牌和當時請求此訪問令牌的用戶端令牌不一致。

登出帳號[]

負載
  • 根標籤
    •  username:帳號名稱。
    •  password:帳號密碼。
POST請求

/signout

響應

如果登出成功伺服器將返回一個空的負載。

使訪問令牌無效[]

負載
  • 根標籤
    •  accessToken:訪問令牌,在請求之後這個令牌將會失效。
    •  clientToken:用戶端令牌,要與驗證時的令牌一致。
POST請求

/invaildate

響應

如果使令牌成功無效化伺服器將返回一個空的負載。

錯誤資訊
HTTP狀態碼 錯誤(error) 錯誤具體資訊(errorMessage) 錯誤說明
403 ForbiddenOperationException Invalid token. 無效的訪問令牌。
Token does not exist. 用戶端令牌和當時請求此訪問令牌的用戶端令牌不一致。

Microsoft身份驗證[]

對於Microsoft帳號和已經從Mojang帳號遷移到Microsoft的帳號要使用下面的API進行身份驗證。

在使用Microsoft驗證之前,必須要透過建立Microsoft Azure應用程式來獲得OAuth 2.0用戶端ID和密鑰。擁有這兩個資料,就可以取得Microsoft令牌。請注意:在取得令牌時scope參數中應包含XboxLive.signin,否則無法進行取得Xbox Live令牌等操作。

使用Microsoft令牌取得Xbox Live令牌[]

負載
  • 根標籤
    •  Properties:驗證屬性。
      •  AuthMethod:登入方法。固定值RPS
      •  SiteName:站點名稱。固定值user.auth.xboxlive.com
      •  RpsTicket:登入使用的票據。值為d=<Microsoft访问令牌>
    •  RelyingParty:依賴的平台。固定值http://auth.xboxlive.com
    •  TokenType:訪問令牌的類型。固定值JWT
POST請求

https://user.auth.xboxlive.com/user/authenticate

要求SSL實現支持SSL重協商。

響應
  • 根標籤
    •  IssueInstant:取得Xbox Live令牌的時間。
    •  NotAfter:Xbox Live令牌過期時間。
    •  Token:Xbox Live訪問令牌。
    •  DisplayClaims:未知。
      •  xui:未知。
          •  uhs:使用者的哈希碼。

使用Xbox Live令牌取得XSTS令牌[]

負載
  • 根標籤
    •  Properties:驗證屬性。
      •  SandboxId:沙盒ID。固定值RETAIL
      •  UserTokens:使用者的Xbox Live令牌。
        • :使用者的Xbox Live令牌,在上一步取得。
    •  RelyingParty:依賴的平台。固定值rp://api.minecraftservices.com/
    •  TokenType:訪問令牌的類型。固定值JWT
POST請求

https://xsts.auth.xboxlive.com/xsts/authorize

要求SSL實現支持SSL重協商。

響應
  • 根標籤
    •  IssueInstant:取得XSTS令牌的時間。
    •  NotAfter:XSTS令牌過期時間。
    •  Token:XSTS訪問令牌。
    •  DisplayClaims:未知。
      •  xui:未知。
          •  uhs:使用者的哈希碼。
錯誤資訊

如果沒有成功取得XSTS令牌,伺服器返回HTTP狀態碼401。

透過XSTS令牌取得Minecraft訪問令牌[]

負載
  • 根標籤
    •  identityToken:身份令牌。值為XBL3.0 x=<用户哈希码>;<XSTS访问令牌>
POST請求

https://api.minecraftservices.com/authentication/login_with_xbox

響應
  • 根標籤
    •  username:一個UUID,但不是帳號的UUID。
    •  roles:未知,為空。
    •  access_token:Minecraft訪問令牌。
    •  token_type:令牌類型。固定值Bearer
    •  expires_in:有效時間,以秒為單位。

驗證帳號是否擁有Minecraft[]

請求頭

Authorization要求為Bearer <有效的Minecraft访问令牌>

GET請求

https://api.minecraftservices.com/entitlements/mcstore

響應

如果帳號擁有Minecraft,伺服器將會返回下面的負載:

  • 根標籤
    •  items:資料和簽名列表。
      •  name:資料名稱,product_minecraftgame_minecraft
      •  signature:資料的JWT簽名。
    •  signature:JWT簽名。
    •  keyID:未知。

如果帳號不擁有Minecraft或者是XGP使用者,伺服器將返回空負載。

玩家配置操作[]

操作玩家配置的API基本都在https://api.minecraftservices.com伺服器下,並且都要求請求頭包含Authorization,且值為Bearer <有效的Minecraft訪問令牌>。如果請求頭不包含訪問令牌資訊或者訪問令牌無效,伺服器將返回HTTP狀態碼401。

取得配置資訊[]

GET請求

/minecraft/profile

響應
  • 根標籤
    •  id:玩家的UUID。
    •  name:玩家名稱。
    •  skins:玩家擁有的所有外觀資訊。
      • :一個外觀。
        •  id:外觀的UUID。
        •  state:外觀的使用狀態。
        •  url:外觀的URL。
        •  variant:外觀類型。如果是Steve模型的外觀這一項是CLASSIC,如果是Alex模型的外觀這一項是SLIM
    •  capes:玩家擁有的所有披風資訊。
      • :一個披風。
        •  id:披風的UUID。
        •  state:披風的使用狀態。
        •  url:披風的URL。
        •  alias:披風的別名。

取得玩家屬性[]

GET請求

/player/attributes

響應
  • 根標籤
    •  privileges:玩家的能力。
      •  onlineChat:玩家接受聊天資訊的能力。
        •  enable:為真時玩家可以接受聊天資訊,為假時不能。
      •  multiplayerServer:玩家加入多人伺服器的能力。
        •  enable:為真時玩家可以加入多人伺服器,為假時不能。
      •  multiplayerRealms:玩家加入Realms的能力。
        •  enable:為真時玩家可以加入Realms,為假時不能。
      •  telemetry:玩家發送遙測資料的能力。
        •  enable:為真時玩家可以發送遙測資料。
      •  optionalTelemetry:玩家發送可選遙測資料的能力。
        •  enable:為真時玩家可以發送可選遙測資料。
    •  profanityFilterPreferences:玩家Realms聊天過濾選項。
      •  profanityFilterOn:是否開啟Realms聊天過濾。
    •  banStatus:玩家封鎖狀態。
      •  bannedScopes:玩家封鎖的範圍。
        • :玩家的封鎖範圍對象。如果玩家未被封鎖,則不存在這些對象。目前只有MULTIPLAYER項。
          •  banId:封鎖的UUID。
          •  expires:封鎖到期時間。如果玩家被永久封鎖,這一項不存在。
          •  reason:封鎖原因。
          •  reasonMessage:封鎖訊息。

啟用/停用Realms聊天過濾[]

負載
  • 根標籤
    •  profanityFilterPreferences:玩家Realms聊天過濾選項。
      •  profanityFilterOn:是否開啟Realms聊天過濾。
POST請求

/player/attributes

響應

與取得玩家屬性的響應相同。

取得屏蔽玩家列表[]

GET請求

/privacy/blocklist

響應
  • 根標籤
    •  blockedProfiles:被屏蔽的玩家列表。這些玩家的聊天資訊和Realms邀請將不可見。
      • :被屏蔽玩家的UUID。

獲得簽名密鑰對[]

POST請求

/player/certificates

響應
  • 根標籤
    •  keyPair:簽名使用的密鑰對。
      •  privateKey:私鑰。以-----BEGIN RSA PRIVATE KEY-----開頭並以-----END RSA PRIVATE KEY-----結束。
      •  publicKey:公鑰。以-----BEGIN RSA PUBLIC KEY-----開頭並以-----END RSA PUBLIC KEY-----結束。
    •  publicKeySignature:在剛加入簽名時使用的公鑰簽名。目前最新版本已經不再使用此簽名,而是V2版本的簽名。
    •  publicKeySignatureV2:公鑰簽名。
    •  expiresAt:密鑰對到期時間。
    •  refreshedAfter:密鑰對刷新時間。

取得玩家名稱資訊[]

GET請求

/profile/namechange

響應
  • 根標籤
    •  changedAt:最近一次的名稱修改時間。
    •  createdAt:玩家配置建立的時間。
    •  nameChangeAllowed:是否允許修改名稱。

檢查禮品卡是否有效[]

GET請求

/productvoucher/giftcode

響應

如果禮品卡有效,伺服器會返回HTTP狀態碼200或者204。如果禮品卡無效,伺服器將會返回HTTP狀態碼404。

檢查名稱可用性[]

GET請求

/minecraft/profile/name/<要检查的名称>/available

響應
  • 根標籤
    •  status:名稱的狀態。如果是DUPLICATE代表名稱已被占用,如果是AVAILABLE代表名稱可用,如果是NOT_ALLOWED代表名稱不符合要求。

修改名稱[]

輸入

修改的名稱。

PUT請求

/minecraft/profile/name/<修改的名称>

響應
  • 根標籤
    •  id:玩家的UUID。
    •  name:修改之後的玩家名稱。
    •  skins:玩家擁有的所有外觀資訊。
      • :一個外觀。
        •  id:外觀的UUID。
        •  state:外觀的使用狀態。
        •  url:外觀的URL。
        •  variant:外觀類型。如果是Steve模型的外觀這一項是CLASSIC,如果是Alex模型的外觀這一項是SLIM
    •  capes:玩家擁有的所有披風資訊。
      • :一個披風。
        •  id:披風的UUID。
        •  state:披風的使用狀態。
        •  url:披風的URL。
        •  alias:披風的別名。
錯誤資訊
HTTP狀態碼 錯誤(error) 錯誤具體資訊(errorMessage) 錯誤說明
400 CONSTRAINT_VIOLATION changeProfileName.profileName: Invalid profile name 名稱不符合要求(大於16個字元或含有非數字、字母和下劃線的字元)。
403 (無) Could not change name for profile 不可以修改名稱。如果detail.statusDUPLICATE說明此名稱已被占用。
429 - - 發送了太多次改名請求。

更換外觀[]

負載
  • 根標籤
    •  variant:外觀模型。如果是Steve模型要使用classic,如果是Alex模型要使用slim
    •  url:外觀的URL。
POST請求

/minecraft/profile/skins

響應

如果更換成功,伺服器將返回空負載。

上傳外觀[]

負載

負載由兩部分組成。

  • variant:外觀模型。如果是Steve模型要使用classic,如果是Alex模型要使用slim
  • file:圖片資料。在上傳之後會將玩家的外觀設定為新上傳的這個外觀。
POST請求

/minecraft/profile/skins

舉例
curl -X POST -H "Authorization: Bearer <access token>" -F variant=classic -F file="@steeevee.png;type=image/png" https://api.minecraftservices.com/minecraft/profile/skins
響應

如果上傳成功,伺服器將返回空負載。

重設外觀[]

輸入

玩家的UUID。

DELETE請求

https://api.mojang.com/user/profile/<UUID>/skin

響應

如果操作成功,伺服器將返回空負載。

隱藏披風[]

DELETE請求

/minecraft/profile/capes/active

響應

如果操作成功,伺服器將返回空負載。

顯示披風[]

負載
  • 根標籤
    •  capeId:要顯示的披風的UUID。
PUT請求

/minecraft/profile/capes/active

響應
  • 根標籤
    •  id:玩家的UUID。
    •  name:玩家名稱。
    •  skins:玩家擁有的所有外觀資訊。
      • :一個外觀。
        •  id:外觀的UUID。
        •  state:外觀的使用狀態。
        •  url:外觀的URL。
        •  variant:外觀類型。如果是Steve模型的外觀這一項是CLASSIC,如果是Alex模型的外觀這一項是SLIM
    •  capes:玩家擁有的所有披風資訊。
      • :一個披風。
        •  id:披風的UUID。
        •  state:披風的使用狀態。
        •  url:披風的URL。
        •  alias:披風的別名。
錯誤資訊
HTTP狀態碼 錯誤(error) 錯誤具體資訊(errorMessage) 錯誤說明
400 (無) profile does not own cape 玩家沒有指定的披風。

帳號遷移操作[]

和玩家配置操作的要求一樣,請求頭要包含Authorization,且值為Bearer <有效的Minecraft訪問令牌>。如果請求頭不包含訪問令牌資訊或者訪問令牌無效,伺服器將返回HTTP狀態碼401。

驗證安全的登入位置[]

GET請求

https://api.mojang.com/user/security/location

響應

如果是一個安全的位置,伺服器將返回HTTP狀態碼204。

錯誤資訊
HTTP狀態碼 錯誤(error) 錯誤具體資訊(errorMessage) 錯誤說明
403 ForbiddenOperationException Current IP is not secured 目前IP不安全。

取得安全驗證問題[]

GET請求

https://api.mojang.com/user/security/challenges

響應
  • 根標籤,內部有3個安全驗證問題對象。
    •  answer:答案資訊。
      •  id:答案的ID。發送安全驗證問題答案的時候需要附帶此ID。
    •  question:問題資訊。
      •  id:問題的ID。
      •  question:問題的描述。問題ID和問題描述一一對應。

發送安全驗證問題答案[]

負載
  • 根標籤,內部有3個安全驗證問題答案對象。
    •  id:答案的ID,與取得問題中的ID一致。
    •  answer:問題的答案。
POST請求

https://api.mojang.com/user/security/challenges

響應

如果安全問題答案全部正確,伺服器將返回HTTP狀態碼204。

錯誤資訊
HTTP狀態碼 錯誤(error) 錯誤具體資訊(errorMessage) 錯誤說明
403 ForbiddenOperationException At least one answer was incorrect 答案不完全正確。

取得帳號遷移狀態[]

GET請求

https://api.minecraftservices.com/rollout/v1/msamigration

響應
  • 根標籤
    •  feature:查詢的功能。固定值msamigration
    •  rollout:是否可以進行帳號遷移。

獲得帳號遷移的一次性密碼[]

POST請求

https://api.minecraftservices.com/twofactorauth/migration/otp

響應

如果帳號可以進行遷移,伺服器會返回HTTP狀態碼201並返回下面的JSON對象:

  • 根標籤
    •  otpId:用於帳號遷移的一次性ID,稍後用於驗證發到帳號電子郵箱的一次性密碼。

驗證帳號遷移的一次性密碼[]

輸入

在取得一次性密碼時的一次性ID。

負載
  • 根標籤
    •  otp:發送到帳號電子郵箱的一次性密碼。
POST請求

https://api.minecraftservices.com/twofactorauth/migration/otp/<otpId>/verify

響應

如果驗證成功,伺服器將返回HTTP狀態碼204。

提交帳號遷移資料[]

負載
  • 根標籤
    •  sessionEmail:帳號遷移的目標電子郵箱。
POST請求

https://api.minecraftservices.com/migration/token

響應

如果成功,伺服器返回HTTP狀態碼200。

伺服器操作[]

取得屏蔽伺服器資訊[]

GET請求

https://sessionserver.mojang.com/blockedservers

響應

伺服器將返回一個文字,每一行都是被屏蔽的伺服器的哈希碼。已知被屏蔽的伺服器可以在這裡找到,大約有2200條資料。

用戶端登入驗證[]

負載
  • 根標籤
    •  accessToken:有效的Minecraft訪問令牌。
    •  selectedProfile:不帶有連字元的玩家UUID。
    •  serverId:伺服器的ID。

其中伺服器的ID由下方算法計算而成:

public static String generateServerId(String baseServerId,   // 服务器的基础ID,通常为空字符串""
                                      PublicKey publicKey,   // 服务器的RSA公钥
                                      SecretKey secretKey    // 服务器与客户端之间使用的对称加密AES密钥
                                     ) throws Exception { 
    MessageDigest messageDigest = MessageDigest.getInstance("SHA-1");
    messageDigest.update(baseServerId.getBytes("ISO_8859_1"));
    messageDigest.update(secretKey.getEncoded());
    messageDigest.update(publicKey.getEncoded());
    byte[] digestData = messageDigest.digest();
    return new BigInteger(digestData).toString(16);
}
POST請求

https://sessionserver.mojang.com/session/minecraft/join

響應

如果驗證成功,伺服器返回HTTP狀態碼204。

伺服器登入驗證[]

輸入

不區分大小寫的玩家名稱、由上方算法得出的伺服器ID和用戶端IP(可選)。

GET請求

https://sessionserver.mojang.com/session/minecraft/hasJoined?username=<玩家名称>&serverId=<服务器ID>&ip=<客户端IP>

響應

如果驗證成功,伺服器將返回和上方取得玩家的外觀和披風一樣的負載。

歷史[]

2014年4月14日Mojang API發布。
2020年11月取得玩家UUID的API不再支持at參數。
2021年10月8日查詢Mojang API狀態的API被移除。在此之前,此API為https://status.mojang.com/check
2022年5月8日取得銷量統計資料的API被移除。在此之前,此API為https://api.mojang.com/orders/statistics
2022年9月13日查詢玩家歷史名稱的API被移除。在此之前,此API為https://api.mojang.com/user/profiles/<UUID>/names

參考[]

語言

Advertisement