티스토리 뷰

반응형

아카라 API refreshToken을 이용한 accessToeken 관리

 

# .env에 refreshToken 저장

DATABASE_URL="mysql://root:root@localhost:3306/bss"
APP_ID=
ACCESS_TOKEN=
REFRESH_TOKEN=
KEY_ID=
APP_KEY=
ACCOUNT=

 

# 스케쥴러에 스케쥴 등록(매일 새벽 03시)

@Injectable()
export class TasksService {
  constructor(private aqara: AqaraService) {}
  @Cron('0 3 * * *') // 매일 새벽 3시에 실행
  handleCron() {
    this.aqara.UpdateToken();
  }

 

#토큰 업데이트 로직 구현(refresh토큰을 이용한 갱신 및 .env에 refreshToken 업데이트)

  async UpdateToken(): Promise<any> {
    const requestBody = {
      intent: 'config.auth.refreshToken',
      data: {
        refreshToken: process.env.REFRESH_TOKEN,
      },
    };
    const result = await this.run(requestBody);
    console.log(result);
    //result에서 리프레쉬토큰이 생기면 업데이트
    this.updateEnvFile('REFRESH_TOKEN', result.result.refreshToken);
    return result;
  }

 

#아카라API #api #typescript #javascript #nestjs

반응형
댓글
반응형