jointrashposs/content/en-US/docs/api/app.md
kakkokari-gtyih 8e52c51c49 wip
2023-07-08 17:36:02 +09:00

2.5 KiB
Raw Blame History

description
MiAuth導入以前のアクセストークン取得方法について説明する。

アプリ作成方式でのアクセストークン取得方法

MiAuth導入12.27.0)より前の、旧来のアクセストークン取得方法について説明します。
12.27.0未満のバージョンのサーバーではこの旧来の方式を使用する必要があります。

1. アプリケーションの作成

app/createエンドポイントに情報を送信し、appSecretを取得します。

{
    // アプリの名前
    "name": "test",
    // アプリの説明
    "description": "my test application",
    // アプリのパーミッション
    "permission": ["write:notes"]
}

この時、callbackUrlでお好きなURLを含めると、次のアクセス許可操作が終了したときにtokenをクエリ文字列に含めながらそこにコールバックするようになります。

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

auth/session/generateエンドポイントappSecretをPOSTします。

{
    "appSecret": "fAb12cD34Ef56gH78Ij16kL32Mn64oPf"
}

token(ここでは仮に798b9f6e-248d-43a7-a919-fabc664027f1)とurlを返してくるので、まずはこのurlにウェブブラウザでアクセスし「アクセスを許可」を選択。

3. accessTokenを問い合わせる

2が終わったことが確認できたら、auth/session/userkeyエンドポイントappSecretと先ほどのtokenをPOSTします。

{
  "appSecret": "fAb12cD34Ef56gH78Ij16kL32Mn64oPf",
  "token": "798b9f6e-248d-43a7-a919-fabc664027f1"
}

ここで取得できる文字列はaccessTokenと呼ばれます。accessTokenは一度限りしか取得できません。

4. iを生成

iは、Node.jsであれば以下のようなコードで生成でき、設定画面で取得するものとは違って64桁の16進数となります。

const crypto = require("crypto")
const i = crypto.createHash("sha256")
    .update(accessToken + appSecret, "utf8")
    .digest("hex")
console.log(i)

5. 実際にテストする

fetch("https://misskey.io/api/notes/create", {
    method: 'POST',
    body: JSON.stringify({
        i: "/* ここにiを入力 */",
        text: "Hello Misskey API World with My Application!"
    }),
    headers: {
        'Content-Type': 'application/json',
    },
	credentials: 'omit',
});