jointrashposs/content/ko-KR/docs/api/app.md

69 lines
2.3 KiB
Markdown
Raw Normal View History

2023-07-08 10:36:02 +02:00
---
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 요청
액세스 허가를 확인하면 [`auth/session/userkey` 엔드포인트](endpoints/auth/session/userkey)에 `appSecret``token`을 POST합니다.
```json
{
"appSecret": "fAb12cD34Ef56gH78Ij16kL32Mn64oPf",
"token": "798b9f6e-248d-43a7-a919-fabc664027f1"
}
```
여기서 취득할 수있는 문자열을 `accessToken`이라 부릅니다. `accessToken`은 한 번만 취득할 수 있습니다.
## 4. i 생성
Node.js에서 `i`는 다음과 같이 생성하며, 설정 화면에서 취득하는 것과는 달리 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',
});
```