번역을 도와주세요
이 문서는 커뮤니티에 의해 번역되었어요. 번역 제출은 Crowdin에서 할 수 있어요. 많은 도움 부탁드려요 🙏
앱 생성 방식으로 액세스 토큰을 획득하는 방법(구식)
MiAuth 도입(12.27.0)이나 OAuth 도입(2023.9.0) 이전의 기존 접근 토큰 획득 방법에 대해 설명합니다.
12.27.0 이하 버전의 서버에서는 이 구식 방식을 사용해야 합니다.
1. 애플리케이션 제작
[app/create
엔드포인트(endpoints/app/create.html)에 정보를 전송하고 appSecret
을 가져옵니다.
{
// アプリの名前
"name": "test",
// アプリの説明
"description": "my test application",
// アプリのパーミッション
"permission": ["write:notes"]
}
이때 callbackUrl
에 원하는 URL을 포함시키면 다음 접근 권한 작업이 종료될 때 token
을 쿼리 문자열에 포함시키면서 해당 URL로 콜백하게 됩니다.
2. 사용자 인증하기
auth/session/generate
엔드포인트에 appSecret
을 POST합니다.
{
"appSecret": "fAb12cD34Ef56gH78Ij16kL32Mn64oPf"
}
token
(여기서는 가칭 798b9f6e-248d-43a7-a919-fabc664027f1
)과 url
을 반환하므로 먼저 이 url에 웹브라우저로 접속하여 접근 허용
을 선택합니다.
3. accessToken 문의하기
2가 완료된 것이 확인되면, [auth/session/userkey
엔드포인트(endpoints/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',
});