Hello Twitch API! Getting tokens
Refs :
https://dev.twitch.tv/docs/authentication/
Types of Tokens
- ID tokens (OIDC) : 이 토큰에는 사용자에 대한 권한정보가 들어있다. 이 토큰을 사용하면 사용자의 자세한 정보를 획득할 수 있다(예. email 주소).
- User access tokens : 사용자를 인증하고, app이 request를 보낼 수 있도록 한다. app이 사용자를 로그인하고 request를 보내는 기능을 가지고 있다면 이 토큰을 사용해야 한다.
- App access tokens : app을 인증한다. 사용자가 아닌 app을 인증하기 때문에 사용자 권한이 필요한 endpoint에는 사용할 수 없다.
Getting tokens
Twitch Authentication : https://id.twitch.tv
토큰을 획득하는 authentication flow에는 3가지 방법이 있다.
- Implicit code flow : app이 server를 사용하지 않을 때 사용한다. (client-side JavaScript or Mobile app)
- Authorization code flow : app이 server를 사용할 때 사용한다.
- Client credentials flow : app access token이 필요하다.
나는 app이 서버를 사용해서 사용자 정보를 얻어와야 하므로
Authorization code flow를 통해 User access token을 가져오는 기능을 구현했다.
OAuth authorization code flow
인증순서
1. user를 https://id.twitch.tv/oauth2/authorize
로 redirect 시킨다. redirect_url param를 담아 보내야 한다.
2. user가 application에 authorize를 부여한다면 redirect_url에 authorization code가 담겨서 넘어오게 된다.
3. authorization code를 담아 POST request를 보내면, response에 access_token이 담겨 넘어오게 된다.
각 flow 별로 선택할 수 있는 procedure에도 여러가지가 있는데, 나는 Authorization flow 중에서도 OAuth Authorization Code Flow를 사용했다.
각 단계에 대한 example code는 다음과 같다.
python-django 환경에서 테스트를 위해 간단하게 작성하였다.
def twitch_login(request):
url = 'https://id.twitch.tv/oauth2/authorize'
params = {'client_id': 'aaaabbbbccccddddeeeeffff',
'redirect_uri': 'http://localhost:8080/account/login/twitch/callback',
'response_type': 'code',
'scope': 'channel:read:subscriptions'}
query_string = urlencode(params)
return redirect(f'{url}?{query_string}')
def twitch_callback(request):
params = request.GET
params = {
'client_id': 'aaaabbbbccccddddeeeeffff',
'client_secret': 'gggghhhhiiiijjjjkkkkllll',
'code': params['code'],
'grant_type': 'authorization_code',
'redirect_uri': 'http://localhost:8080'
}
rst = requests.post('https://id.twitch.tv/oauth2/token', params=params)
rst.raise_for_status()
return JsonResponse(rst.json())
Postman에서 Browser redirect가 동작하지 않아서 chrome에서 테스트를 하여 정상적으로 token이 넘어오는 것을 확인했다.
뭐 쓸데없이 어설프게 가렸지만 GET http://localhost:8080/account/login/twitch request의 response가 302
, 302
, 200
이라는 것만 이해하고 넘어가자.
즉 token 획득 과정은
1. /account/login/twitch에 접근
2. https://id.twitch.tv/oauth2/authorize
로 redirct
3. 로그인 후 2단계에서 실어서 보냈던 redirect_url로 redirect
4. POST로 access_token 획득 & return response
의 과정을 거친다.
처음 해보는 Auth API사용이라 어지러웠다.
이제 이 토큰을 가지고 Twitch API를 사용해보자!
Author And Source
이 문제에 관하여(Hello Twitch API! Getting tokens), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@zamonia500/Hello-Twitch-API-Getting-tokens저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)