LoginSignup
13
3

More than 5 years have passed since last update.

マインクラフトのスキンを取得する

Posted at

0. まえがき

以前は以下のようなURLにアクセスすると自動でリダイレクトし、スキンが表示されたのですが、

http://skins.minecraft.net/MinecraftSkins/yuta0801.png

いつからか、使用できなくなりました。

なので、そのリダイレクト先でもあるURLを取得する方法を残して置こうかと思います

この記事での、URLや返ってくるデータは全て、僕が所有するマインクラフトアカウント(id:yuta0801, uuid:bc7fd64b669e45d48667b77142557036)を対象に実行したものです。使用する場合は適宜読み替えてください。

1. ユーザー名からUUIDを取得する

現段階で使用できる公式のAPIをくまなく調べたのですが、ユーザー名から直接スキンを取得する方法がなかったので、まずはUUIDを取得しなければいけません。

UUIDを取得すると言ってもそんなに難しいことではなく以下のURLにアクセスすると、

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

IDを含んだJSONを得ることができます。

{
    "id": "bc7fd64b669e45d48667b77142557036",
    "name": "yuta0801"
}

2. ユーザーデータを取得する

次に、先程得たUUIDを使用してユーザーのデータを取得していきます。

これも先程と同じようにUUIDを含めたURLにアクセスするとユーザーデータがbase64エンコードされた値が入ったJSONが帰ってきます。なぜbase64エンコードした値を返すか謎

https://sessionserver.mojang.com/session/minecraft/profile/bc7fd64b669e45d48667b77142557036

このJSONの.properties[0].valueに入ってるのがbase64エンコードされたJSONです。

てっきり画像データかと思って何十分も画像にデコードしようと頑張ってましたorg

なんでJSONの中にbase64エンコードしたJSONを入れるんだよ💢

{
    "id": "bc7fd64b669e45d48667b77142557036",
    "name": "yuta0801",
    "properties": [
        {
            "name": "textures",
            "value": "eyJ0aW1lc3RhbXAiOjE1MjA2NzE0MzQ3MDMsInByb2ZpbGVJZCI6ImJjN2ZkNjRiNjY5ZTQ1ZDQ4NjY3Yjc3MTQyNTU3MDM2IiwicHJvZmlsZU5hbWUiOiJ5dXRhMDgwMSIsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS9kNTljNWNlZDYwNGY2Y2Y3NzE1ZGEzNDI5M2M4NWM4ZDlmYjY0NDRlZjFlM2JmNWY5Y2I0Zjk2ZWNkNDk1In19fQ=="
        }
    ]
}

ちなみにbase64をデコードすると以下のようなJSONになります

{
    "timestamp": 1520669872059,
    "profileId": "bc7fd64b669e45d48667b77142557036",
    "profileName": "yuta0801",
    "textures": {
        "SKIN": {
            "url": "http://textures.minecraft.net/texture/d59c5ced604f6cf7715da34293c85c8d9fb6444ef1e3bf5f9cb4f96ecd495"
        }
    }
}

.textures.SKIN.urlが一番最初のURL(現在は使用不可)にアクセスしたときのリダイレクト先のURLを取得できるようになりました。めでたしめでたし。なんであれを削除したんだよ

5. 最後に

ぶっちゃけ、こんな面倒なことをしなくてもサードパーティのAPIを使えば一発で顔部分を切り抜いた画像や、全身の立体画像などを取得できるので、わざわざこんな面倒なことをする必要はないです、はい。

4. 参考資料

Mojang API - wiki.vg - http://wiki.vg/Mojang_API

crafatar/crafatar: A blazing fast API for Minecraft faces - https://github.com/crafatar/crafatar

13
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
3