misskey/src/docs/api.ja.md

5.8 KiB

Misskey API

MisskeyのWeb APIを使って、プログラムからMisskeyの様々な機能にアクセスすることができます。 APIを自分のアカウントから利用する場合(自分のアカウントのみ操作したい場合)と、アプリケーションから利用する場合(不特定のアカウントを操作したい場合)とで利用手順が異なりますので、それぞれのケースについて説明します。

自分の所有するアカウントからAPIにアクセスする場合

「設定 > API」で、APIにアクセスするのに必要なAPIキーを取得してください。 APIにアクセスする際には、リクエストにAPIキーを「i」というパラメータ名で含めます。

アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。

APIの詳しい使用法は「Misskey APIの利用」セクションをご覧ください。

アプリケーションからAPIにアクセスする場合

直接ユーザーのAPIキーをアプリケーションが扱うのは危険なので、 アプリケーションからAPIを利用する際には、アプリケーションとアプリケーションを利用するユーザーが結び付けられた専用のトークン(アクセストークン)をMisskeyに発行してもらい、 そのトークンをリクエストのパラメータに含める必要があります。

アクセストークンは、ユーザーが自分のアカウントにあなたのアプリケーションがアクセスすることを許可した場合のみ発行されます

1.アプリケーションを登録する

まず、あなたのアプリケーションやWebサービス(以後、あなたのアプリと呼びます)をMisskeyに登録します。 デベロッパーセンターにアクセスし、「アプリ > アプリ作成」からアプリを作成してください。 フォームの記入欄の説明は以下の通りです:

名前 説明
アプリケーション名 あなたのアプリの名称。
アプリの概要 あなたのアプリの簡単な説明や紹介。
コールバックURL ユーザーが後述する認証フォームで認証を終えた際にリダイレクトするURLを設定できます。あなたのアプリがWebサービスである場合に有用です。
権限 あなたのアプリが要求する権限。ここで要求した機能だけがAPIからアクセスできます。

登録が済むとあなたのアプリのシークレットキーが入手できます。このシークレットキーは後で使用します。

アプリに成りすまされる可能性があるため、極力このシークレットキーは公開しないようにしてください。

2.ユーザーに認証させる

アプリを使ってもらうには、ユーザーにアカウントへのアクセスの許可をもらう必要があります。

認証セッションを開始するには、%API_URL%/auth/session/generate へパラメータに appSecret としてシークレットキーを含めたリクエストを送信します。 リクエスト形式はJSONで、メソッドはPOSTです。 レスポンスとして認証セッションのトークンや認証フォームのURLが取得できるので、認証フォームのURLをブラウザで表示し、ユーザーにフォームを提示してください。

あなたのアプリがコールバックURLを設定している場合、 ユーザーがあなたのアプリの連携を許可すると設定しているコールバックURLに token という名前でセッションのトークンが含まれたクエリを付けてリダイレクトします。

あなたのアプリがコールバックURLを設定していない場合、ユーザーがあなたのアプリの連携を許可したことを(何らかの方法で(たとえばボタンを押させるなど))確認出来るようにしてください。

3.ユーザーのアクセストークンを取得する

ユーザーが連携を許可したら、%URL%/auth/session/userkey へ次のパラメータを含むリクエストを送信します:

名前 説明
appSecret string アプリのシークレットキー
token string セッションのトークン

上手くいけば、認証したユーザーのアクセストークンがレスポンスとして取得できます。おめでとうございます!

アクセストークンが取得できたら、「ユーザーのアクセストークン+あなたのアプリのシークレットキーをsha256したもの」を「i」というパラメータでリクエストに含めると、APIにアクセスすることができます。

「i」パラメータの生成方法を擬似コードで表すと次のようになります:

const i = sha256(accessToken + secretKey);

APIの詳しい使用法は「Misskey APIの利用」セクションをご覧ください。

Misskey APIの利用

APIはすべてリクエストのパラメータ・レスポンスともにJSON形式です。また、すべてのエンドポイントはPOSTメソッドのみ受け付けます。 APIリファレンスもご確認ください。

レートリミット

Misskey APIにはレートリミットがあり、短時間のうちに多数のリクエストを送信すると、一定時間APIを利用することができなくなることがあります。