Node.js
Reddit API로 게시글 가져오기
임채성
2022. 12. 11. 18:33
정보
Reddit은
공식 REST API,
Python 모듈인 PRAW
를 지원합니다.
본 글은 Reddit API를 통한 OAuth 및 게시글 가져오기를 진행하며,
해당 내용을 공부하면서 겪었던 시행착오를 공유합니다.
이번 강의 플로우
- 레딧 개발자 계정을 생성하고, 앱을 등록합니다.
- 등록한 앱의 정보와 Reddit 계정을 통해 엑세스 토큰을 얻습니다.
- 얻은 엑세스 토큰으로 게시글을 얻어옵니다.
어떤 언어에서든 따라할 수 있도록, 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 |
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
이 외의 레딧 API 문서에 있는 API를 사용할 수 있습니다.
막히거나 잘못된 정보가 있으면 댓글로 알려주세요!