REST APIs
요즘은 웹이든 앱이든 페이스북이나 트위터, 구글 등의 SNS 계정으로 회원가입을 받는 경우가 많다.
따로 회원가입 양식을 요구하지 않으니 사용자 입장에서도 좋고, SNS 연동이나 홍보가 편리하므로 서비스 입장에서도 좋다.
회원가입을 하지 않고도 타 사이트에서 SNS 계정의 권한으로 서비스를 이용하는 것은 각 SNS에서 제공하는 API / SDK 덕분이다.
예를 들어, A 쇼핑몰에 트위터 계정으로 로그인 한 후에 마이페이지 등에서 내 트위터 친구 목록 불러오기를 할 수 있다.
트위터에 방문하지 않고 트위터 데이터를 읽어올 수 있는 것은 A 쇼핑몰에서 트위터가 제공하는 API 를 사용하기 때문이다.
twitter API 를 사용하면 새 트윗, 프로필이나 팔로워 등 트위터 상의 데이터들을 읽어오거나 작성할 수 있다.
A 쇼핑몰에서 twitter API 를 사용하여 B 사용자의 권한으로 개인정보를 가져올 수 있었던 것은 A 쇼핑몰이 트위터로부터 인증을 받았기 때문이다.
대단한 인증이 아니다. 트위터 개발자 사이트(https://dev.twitter.com/)에 가입을 하고 [Manager Your Apps] 에서 프로젝트(App)를 새로 만들면,
예를 들어, A 쇼핑몰 전용 프로젝트(App)를 만들면 그 프로젝트에 대한 고유 키가 발급된다.
- Consumer Key
- Consumer Secret
그리고 A 쇼핑몰에서 이 키들을 사용하여 API 를 요청하면, 트위터에서 '아~ A 쇼핑몰에서 API 를 요청하는구나~' 라고 인식하고 요청을 허용한다.
REQUEST URL
twitter API 는 restful 방식이다.
REST API. 즉, URL 과 HTTP 메소드를 이용하여 결과를 얻는 방식이다.
예를 들어, 로그인한 사용자의 친구 목록을 불러오는 API 를 사용해 보면,
1
2
3
4
5
6 |
GET https://api.twitter.com/1.1/friends/list.json
"errors": {
"code": 215
"message": "Bad Authentication data."
} |
cs |
인증 오류이다.
단지 저 URL 을 링크 걸어놓는다고 해서 트위터가 모든 요청을 허용하지는 않는다. API 마다 다르긴 하지만
Requires authentication? Yes
라고 리소스 정보에 쓰여 있다면 이 API 는 트위터가 인식할 수 있도록 요청 헤더에 인증 정보를 함께 넘겨야 올바른 결과값을 받을 수 있다.
API 로 접근하려는 소비자(Consumer) 가 누구인지, 어떤 사용자의 Token 으로 정보를 얻으려 하는지를 트위터가 정해놓은 방식대로 요청 헤더에 담아 전달해야 한다.
이런식의 Flow 가 바로 OAuth 라는 표준 인증 방식이다.
트위터는 이 OAuth 인증 방식으로 Consumer(A 쇼핑몰)들에게 API 를 제공한다.
WRITTEN BY
- 손가락귀신
정신 못차리면, 벌 받는다.