티스토리 인증 서버 구축

in kr-dev 커뮤니티last year

옵시디언 티스토리 플로그인을 개발하려고 보니 티스토리는 Server-side의 OAuth 2.0 인증 방식을 제공하고 있다. 예전에는 Client-side 인증 방식도 제공했던 것 같은데…

인증 요청을 클라이언트에서 모두 처리해도 되지만, 그러면 SecretKey가 노출되기 때문에 인증은 서버에서 처리하는게 좋을 것 같다. 조금 귀찮긴 하지만 인증 서버를 개발하기로 했다. 티스토리 Open API 문서를 읽어보니 "Access Token 발급" API 하나만 있으면 될 것 같다.

백엔드 개발 언어와 프레임워크를 조금 고민했는데 그냥 Nest 로 결정했다. Nest CI를 사용하여 프로젝트를 생성했다.

npm i -g @nestjs/cli
nest new tistory-auth-server

nest에서 환경변수 .env 를 사용하기 위해 @nestjs/config 패키지를 설치했다.

yarn add @nestjs/config

설치한 config 패키지 설정을 appModule에 추가했다.

import { Module } from '@nestjs/common';
import { ConfigModule } from '@nestjs/config';
import { AppController } from './app.controller';
import { AppService } from './app.service';

@Module({
  imports: [ConfigModule.forRoot()],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}

그리고 티스토리 API와 HTTP 통신을 위해서 @nestjs/axios를 설치했다.

npm i --save @nestjs/axios

인증 서비스는 아주 간단하게 구현했다.

async getAccessToken(code: string): Promise<string> {
    try {
      const response = await this.httpService.axiosRef.get(
        'https://www.tistory.com/oauth/access_token',
        {
          params: {
            client_id: this.clientId,
            client_secret: this.secretKey,
            redirect_uri: this.redirectUri,
            grant_type: 'authorization_code',
            code,
          },
        },
      );
      return response.data;
    } catch (error) {
      return error.response.data;
    }
}

END.

Sort:  
 last year 

[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.

Upvoted! Thank you for supporting witness @jswit.

Coin Marketplace

STEEM 0.35
TRX 0.12
JST 0.040
BTC 70733.96
ETH 3563.16
USDT 1.00
SBD 4.76