jointrashposs/content/en/.docs-legacy/api/app.md
2023-07-11 23:48:17 +09:00

74 lines
2.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
description: MiAuth導入以前のアクセストークン取得方法について説明する。
---
# アプリ作成方式でのアクセストークン取得方法
MiAuth導入12.27.0)より前の、旧来のアクセストークン取得方法について説明します。
12.27.0未満のバージョンのサーバーではこの旧来の方式を使用する必要があります。
## 1. アプリケーションの作成
[`app/create`エンドポイント](endpoints/app/create.html)に情報を送信し、`appSecret`を取得します。
```json
{
// アプリの名前
"name": "test",
// アプリの説明
"description": "my test application",
// アプリのパーミッション
"permission": ["write:notes"]
}
```
この時、`callbackUrl`でお好きなURLを含めると、次のアクセス許可操作が終了したときに`token`をクエリ文字列に含めながらそこにコールバックするようになります。
## 2. ユーザーに認証させる
[`auth/session/generate`エンドポイント](endpoints/auth/session/generate)に`appSecret`をPOSTします。
```json
{
"appSecret": "fAb12cD34Ef56gH78Ij16kL32Mn64oPf"
}
```
`token`(ここでは仮に`798b9f6e-248d-43a7-a919-fabc664027f1`)と`url`を返してくるので、まずはこのurlにウェブブラウザでアクセスし「アクセスを許可」を選択。
## 3. accessTokenを問い合わせる
2が終わったことが確認できたら、[`auth/session/userkey`エンドポイント](endpoints/auth/session/userkey)に`appSecret`と先ほどの`token`をPOSTします。
```json
{
"appSecret": "fAb12cD34Ef56gH78Ij16kL32Mn64oPf",
"token": "798b9f6e-248d-43a7-a919-fabc664027f1"
}
```
ここで取得できる文字列は`accessToken`と呼ばれます。`accessToken`は一度限りしか取得できません。
## 4. iを生成
`i`は、Node.jsであれば以下のようなコードで生成でき、設定画面で取得するものとは違って64桁の16進数となります。
```javascript
const crypto = require("crypto")
const i = crypto.createHash("sha256")
.update(accessToken + appSecret, "utf8")
.digest("hex")
console.log(i)
```
## 5. 実際にテストする
```javascript
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',
});
```