Node.js

Reddit API로 게시글 가져오기

임채성 2022. 12. 11. 18:33

정보

Reddit은
공식 REST API,
Python 모듈인 PRAW
를 지원합니다.

 

 

본 글은 Reddit API를 통한 OAuth 및 게시글 가져오기를 진행하며,

해당 내용을 공부하면서 겪었던 시행착오를 공유합니다.

 


이번 강의 플로우

  1. 레딧 개발자 계정을 생성하고, 앱을 등록합니다.
  2. 등록한 앱의 정보와 Reddit 계정을 통해 엑세스 토큰을 얻습니다.
  3. 얻은 엑세스 토큰으로 게시글을 얻어옵니다.

 

어떤 언어에서든 따라할 수 있도록, Postman에서 진행합니다.

 

1.  레딧 개발자 계정 생성

 

 

레딧 계정이 없다면, 회원가입 해줍니다.

구글이나 애플을 통한 OAuth 로그인이 아닌, 이메일을 통한 일반 회원가입으로 진행해주세요.

 

 

 

레딧 개발자 앱 등록을 진행합니다. 아래 사이트에 접속해 로그인해주세요.

레딧 개발자 앱 등록

 

반드시 script로 설정해주세요.

 

 

web app / installed app / script의 차이 알 필요 X

해당 내용에 대한 공식 문서

 

  • script: 단일 계정을 통해 무언가를 실행하려는 경우
  • Web app: 사용자가 로그인ㅇ하고 토큰이 서버로 다시 전달되며 일반적인 웹 사이트와 같은 작업 수행하는 경우
    • OAuth, 세션
  • Installed App: 사용자가 로그인할 때 사용되지만 토큰은 기기에 남아 있으며 서버로 전송되지 않습니다.
    • 쿠키

 

 

 

2.  엑세스 토큰 얻기

기본 정보

POST /api/v1/access_token

Host: reddit.com

 

Request

 

Parameter

Name Type Input 설명 Required
grant_type String password 로그인 타입 O
username String <당신의 레딧 계정 아이디> 내 계정 아이디 O
password String <당신의 레딧 계정 비밀번호> 내 계정 비밀번호 O

 

 

Auth: Basic Auth

Name Type Input 설명 Required
username String <당신의 레딧 앱 아이디> 내 앱 use script O
password String <당신의 레딧 앱 시크릿 코드> 내 계정 secret O

1에서 등록한 개발 앱

 

 

 

Resonse

Name Type 설명 Required
access_token String 엑세스 토큰 O
token_type String 토큰 타입, bearer O
expires_In Int 만료일, Unix Epoch Seconds O
scope String 해당 API 부여 권한 O
refresh_token String 리프레시 토큰 X
error String invalid_grant:
1. OAuth로 되어 있는 계정입니다. 일반 회원가입으로 진행해주세요.
2. 잘못된 비밀번호입니다.
X

 

 

3. 인기 게시글 가져오기

기본 정보

GET /best

Host: oauth.reddit.com

Authorization: Bearer ${ACCESS_TOKEN}

 

Request

Name 설명 Required
Authorization 사용자 인증 수단, 액세스 토큰 값
Authorization: Bearer ${ACCESS_TOKEN}
O

 

Response

인기글 데이터가 list로 반환됩니다.

 

permalink가 url입니다.

 

가져온 인기글

이 외의 레딧 API 문서에 있는 API를 사용할 수 있습니다.

 

막히거나 잘못된 정보가 있으면 댓글로 알려주세요!