MisskeyでアプリからAPIトークンを取得して投稿するまで


はじめに

他にMisskeyでアプリのAPIを使って投稿する記事が見つからなかったので、備忘録として上げておきます。

環境

Ubuntu 19.10
Missleyのインスタンス めいすきー(https://misskey.m54.net/)

注意

筆者はめいすきー(https://misskey.m54.net/)で投稿していますが、自分でAPIトークンを取得する場合はこのURLを自分のmisskeyのインスタンスのURLに適宜置き換えて下さい。
(以降はめいすきーのURLを用いて説明します。)

1, アプリを登録する

https://misskey.m544.net/dev/apps
上記のリンクにアクセスし、「アプリ作成」をクリック

アプリケーション名、アプリの概要を入力し、「投稿を作成・削除する」にチェックを入れて「アプリケーションの作成」ボタンをクリックしてください。

アプリを作成すると、先程作成したアプリが表示されているはずなのでアプリの名前をクリックします。

クリックするとアプリのシークレットキーが取得できます。このシークレットキーは後で使用するのでメモしておくとよいです。

2, アプリを認証する

アプリを認証するためには、https://misskey.m544.net/api/auth/session/generateに先程取得したシークレットキーを使ってリクエストを送信します。
筆者はcurlを使用しました。JSON形式でPOSTが出来たらなんでもいいと思います。

curl -X POST -H 'Content-Type:application/json' -d '{"appSecret":"<シークレットキー>"}' https://misskey.m544.net/api/auth/session/generate

リクエストを送ると、認証用のトークンとURLが取得出来るので、認証用のURLにアクセスします。
認証用のトークンはこの後に使用します。

アクセスを許可を選択します。

3, APIトークンを取得する

https://misskey.kurume-nct.com/api/auth/session/userkeyに先程使用したシークレットキーと、先程取得した認証用のトークンを使用して、リクエストを送ります。

curl -X POST -H 'Content-Type:application/json' -d '{"appSecret":"<シークレットキー>, "token":"<認証用のトークン>"}' https://misskey.m544.net/api/auth/session/userkey

リクエストに成功すると、レスポンスの中に、"accessToken":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"とアクセストークンが返ってきているはずです。
このアクセストークンを先程のシークレットキーを連結し、sha256と呼ばれるハッシュ関数でハッシュ化することで、ようやくAPIトークンが取得できます。
(以下のコマンドで取得できます)

$ export accesstoken="<アクセストークン>"
$ export secretkey="<シークレットキー>" 
$ echo -n $accesstoken$secretkey | shasum -a 256

4, 投稿する

いよいよAPIトークンを用いて投稿を行います。方法は非常にシンプルです。
https://misskey.m544.net/api/notes/create
上記のURLにAPIトークンを投稿したい文章を載せてリクエストを送ります。

curl -X POST https://misskey.m544.net/api/notes/create -d '{"i":"<APIトークン>","text":"hogehoge"}'

成功すると、以下のように文章が投稿出来ているのが確認できるはずです。

以上で投稿完了です。お疲れ様でした。

参考にした記事

https://misskey.kurume-nct.com/api-doc
https://blog.jnsk.info/post/174592458087/misskey%E3%81%AEapi%E3%82%92%E5%8F%A9%E3%81%84%E3%81%A6%E6%8A%95%E7%A8%BF%E3%81%99%E3%82%8B