토큰 새로 고침
리프레시 토큰은 클라이언트 애플리케이션이 사용자가 애플리케이션을 재승인할 필요 없이 새로운 액세스 토큰을 얻을 수 있도록 하는 보안 자격 증명입니다.
액세스 토큰은 의도적으로 제한된 수명을 가지도록 설정되며(1시간), 이 시간이 끝나면, 인증 토큰 요청 응답 중에 획득한 원래의 리프레시 토큰을 제공하여 새로운 토큰을 얻을 수 있습니다:
{
"access_token": "NgCXRK...MzYjw",
"token_type": "Bearer",
"scope": "user-read-private user-read-email",
"expires_in": 3600,
"refresh_token": "NgAagA...Um_SHo"
}
요청
액세스 토큰을 새로 고치려면, 다음 매개변수를 포함한 POST 요청을 보내야 합니다:
본문 매개변수 | 필수 여부 | 값 |
---|---|---|
grant_type | 필수 | refresh_token 으로 설정 |
refresh_token | 필수 | 인증 토큰 요청 시 반환된 리프레시 토큰 |
client_id | PKCE 확장에서만 필수 | 개발자 대시보드에서 제공되는 애플리케이션의 클라이언트 ID |
그리고 다음 헤더를 포함해야 합니다:
헤더 매개변수 | 필수 여부 | 값 |
---|---|---|
Content-Type | 필수 | 항상 application/x-www-form-urlencoded 로 설정 |
Authorization | 인증 코드 플로우에서만 필수 | 클라이언트 ID와 클라이언트 시크릿 키를 포함한 Base 64 인코딩된 문자열. 형식은 다음과 같아야 합니다: Authorization: Basic <base64 encoded client_id:client_secret> |
예시
다음 코드 스니펫은 두 가지 예제를 나타냅니다:
- Authorization Code with PKCE 확장 플로우에 따라 발급된 토큰을 새로 고치는 클라이언트 측(브라우저) JavaScript 함수.
- Authorization Code 플로우에서 발급된 토큰을 새로 고치는 서버 측(nodeJS와 express 사용) JavaScript 메서드.
브라우저 측 JavaScript 코드 예시:
코드 예시: JavaScript
const getRefreshToken = async () => {
// 이전에 저장된 리프레시 토큰
const refreshToken = localStorage.getItem('refresh_token');
const url = "https://accounts.spotify.com/api/token";
const payload = {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
body: new URLSearchParams({
grant_type: 'refresh_token',
refresh_token: refreshToken,
client_id: clientId
}),
}
const body = await fetch(url, payload);
const response = await body.json();
localStorage.setItem('access_token', response.access_token);
if (response.refresh_token) {
localStorage.setItem('refresh_token', response.refresh_token);
}
}
응답
모든 것이 정상적으로 처리되면, 액세스 토큰 발급 시와 매우 유사한 200 OK 응답을 받게 됩니다:
코드 예시: JSON
{
"access_token": "BQBLuPRYBQ...BP8stIv5xr-Iwaf4l8eg",
"token_type": "Bearer",
"expires_in": 3600,
"refresh_token": "AQAQfyEFmJJuCvAFh...cG_m-2KTgNDaDMQqjrOa3",
"scope": "user-read-email user-read-private"
}
응답에 포함된 리프레시 토큰은 새 토큰을 요청하는 데 사용할 수 있습니다. 초기 리프레시 토큰을 얻는 데 사용된 인증 방식에 따라, 모든 응답에 리프레시 토큰이 포함되지 않을 수 있습니다. 리프레시 토큰이 반환되지 않는 경우, 기존 토큰을 계속 사용하십시오.
'Coding History > project' 카테고리의 다른 글
Spring wav 파일 업로드 및 재생 (0) | 2024.09.01 |
---|---|
Figma 작업 단계 (1) | 2024.08.30 |
스포티파이 for Developers 튜토리얼 번역 ( 4 ) (0) | 2024.08.29 |
스포티파이 for Developers 튜토리얼 번역 ( 3 ) (0) | 2024.08.29 |
스포티파이 for Developers 튜토리얼 번역 ( 2 ) (0) | 2024.08.29 |