번역을 도와주세요
이 문서는 커뮤니티에 의해 번역되었습니다. 번역 제출은 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',
});