번역을 도와주세요

이 문서는 커뮤니티에 의해 번역되었어요. 번역 제출은 Crowdin에서 할 수 있어요. 많은 도움 부탁드려요 🙏

アプリ作成方式でのアクセストークン取得方法(旧来型)

MiAuth導入(12.27.0)やOAuth導入(2023.9.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',
});