请协助我们进行翻译
本文档为社区翻译,您可以通过 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.example/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',
});