안녕하세요

[report:3] Live 상태 업데이트 실패 본문

유튜브컨텐츠탐색-StelLife

[report:3] Live 상태 업데이트 실패

sakuraop 2023. 5. 28. 17:27


문제 원인: 

twitch api token은 60일의 만료기한을 가지기 때문에 만료가 되었다.
주기적으로 갱신을 필요로 한 것이 원인.


https://dev.twitch.tv/docs/authentication/getting-tokens-oauth/#client-credentials-grant-flow

 

Getting OAuth Access Tokens

Getting OAuth Access Tokens

dev.twitch.tv

새로운 token을 발급받아 재등록하면 다시 사용가능 하다.

https://id.twitch.tv/oauth2/token

위의 주소로 아래와 같이 post 요청을 보내면 된다.
 
const { default: axios } = require("axios");
 
exports.refreshTwitchToken = async (user_id) => {
  const headers = {
    "Content-Type": "application/x-www-form-urlencoded",
  };

  const params = {
    client_id: process.env.REACT_APP_TWITCH_CLIENT_ID,
    client_secret: process.env.REACT_APP_TWITCH_ACCESS_TOKEN,
    grant_type: "client_credentials",
  };

  try {
    const request = await axios.post(`https://id.twitch.tv/oauth2/token`, params, { headers });
    console.log(request, "refreshTwitchToken");
    return request;
  } catch (error) {
    console.error("refreshTwitchToken", error);
    return [];
  }
};
 

추가로 고려해볼 수 있는 사항: 액세스 토큰 발급 자동화가 가능한가?

이 갱신 작업을 자동화하기 위해서는 환경변수를 수정하여야 하는데

환경변수의 수정 이후에는 앱을 환경변수가 수정된 파일로 배포하여야만 한다.

액세스 토큰의 만료기한을 refresh 하는 방법은

Client credentials flow

에는 없는 듯하다.
app 작업을 위한 인증 토큰이기 때문이 아닐까 생각된다.

 

user access token에는 refresh_token 존재하여 user의 활동 중에 토큰 만료 기한을 refresh할 방법을 제공한다.

하지만 app access token에는 존재하지 않는다.


refresh 기능이 없는 이유는?

60일 마다 관리하지 않는 api 의 경우에는 의도적으로 죽이기 위함이 아닐까 생각된다.

즉, 더 이상 운영되지 않는 사이트에서 불필요한 트래픽이 발생하는 것을 막기 위해서