[2016.08Ver]Misskey APIの叩き方

2016年8月2日 11時42分 スルメ Misskey

今日はMisskey APIの叩き方を紹介します。

1.コンフィグを取得する

音船氏が管理しているMisskeyのFork(https://github.com/sagume)なら/publicconfig.jsonにアクセスすれば取得できます。

それ以外の場合はトップにアクセスして以下の部分をスクレイピングしてJSONをパースしましょう。

misskey.cf-publicconfig

これが今後重要です。

2.CSRFトークンを取得する

CSRFトークンは以下の部分にあります。正規表現かなにかで取得しましょう。

正規表現の例:<meta name="csrf-token" content="([A-Za-z0-9\-_]+)">

20160802-111910

ちなみに:この時に降ってくるCookieも取得してください。

20160802-112237

3.ログインする

先ほどのCSRFトークンをHTTPヘッダーに

csrf-token: hogehoge-hogehoge

のような形で付けて、ついでにクッキーも付けて、

  • POSTリクエストでbodyに付ける
  • GETリクエストでqueryに付ける(e.g. ?screen-name=hoge&password=hage)

のいずれかで先ほどのコンフィグのsigninUrlのURLにスクリーンネームとパスワードをscreen-nameとpasswordの名前でリクエストしてください。

間違っててもこの時点ではおそらくわかりません。

4.APIを叩く

さていよいよAPIです。

先ほどと同じようにcsrf-tokenとクッキーを付けて先ほどのコンフィグのwebApiUrl+エンドポイント(https://github.com/MissKernel/Misskey-API/blob/master/src/endpoints.ts を見ればわかる)に必ずPOSTリクエストで送信します。

ちなみにapplication/x-www-form-urlencoded以外のフォーマットでのPOSTはできません。

ここでaccount/showを叩くとログインできたか確認できます。

5.おまけ 画像について

画像を使う場合はalbum/files/uploadにアップロードすればいいと思うかもしれませんが違います。 web/album/uploadにアップロードしてください。名前はfileです。(アップロードするときのみmultipart/form-dataが利用できます。)

他にもWeb独自のAPIとかがあるのでhttps://github.com/MissKernel/Misskey-Web/blob/master/src/api/router.ts も見ることを推奨します。

6.おまけ Pythonで書く人へ

https://github.com/Petitsurume/Misq/blob/develop/src/misskey.py

これ便利だよ!!!(宣伝)