카카오 사용자 토큰 발급 (2020/04 변경사항 update)
2020년 4월부터 kakao developers 사이트가 전면 개편되었습니다.
기존에 access token을 제공해주었는데요, 현재는 인증을 거쳐 code / access_token / refresh token 을 발급받도록 변경되었습니다.
또한 기존 애플리케이션이 있더라도 애플리케이션을 새로 만드는 것을 권장 드립니다.
** 개편 마이그레이션으로 인한 호환성 문제가 있네요.^^;;
# 애플리케이션 새로 만들기 및 권한 설정
(더보기 클릭)
[애플리케이션이 없는 경우]
1) 애플리케이션 추가하기
** 사용중이던 애플리케이션 있다면, 2)로 이동합니다
2) 동의 항목 표시
3) 활성화 설정 및 redirect uri 설정
4) 플랫폼 등록
(** 도메인 순서 중요!)
<< 순서 >>
참고 : 인증토큰 받기
Step 1 | Redirect URI 설정 |
Step 2 | 인증 코드 받기 |
Step 3 | 사용자 토큰 받기 (access token / refresh token) |
Step 4 | 토큰 저장 |
Step1) Redirect URI 설정
Step2) 인증 code 받기
https://kauth.kakao.com/oauth/authorize?client_id={REST_API 앱키를 입력하세요}&response_type=code&redirect_uri=https://localhost.com
으로 접속시도하면, 로그인 요청을 합니다.
(참고 : 로그인이 된 세션이 유효하다면, 로그인 요청을 하진 않습니다.
하여, 크롬 시크릿모드에서 수행하시기 바랍니다)
ㅁ step2의 trouble shooting
에러가 나는 경우 +더보기 를 눌러 확인해보세요.
case 1) 뭔가 잘못된 요청한거 같다. 는 메시지가 나올때,
확인1) 지정해준 url뒤에 이상한 문자가 들어간건 아닌지?
확인2) 앱키로 url을 잘 구성하였는지?
만약, 앱키가 ABCDEFG 라면, 아래와 같이 되어야 함
https://kauth.kakao.com/oauth/authorize?client_id=ABCDEFG&response_type=code&redirect_uri=localhost.com
Step3) 사용자 토큰 받기 (access token / refresh token)
import requests
import json
url = "https://kauth.kakao.com/oauth/token"
data = {
"grant_type" : "authorization_code",
"client_id" : "<REST_API 앱키를 입력하세요>",
"redirect_uri" : "https://localhost.com",
"code" : "<step2에서 발급받은 code를 입력하세요>"
}
response = requests.post(url, data=data)
tokens = response.json()
print(tokens)
refresh/access token 발급 완료되어 아래와 같은 결과를 확인 할 수 있습니다.
{'access_token': 'k3U------------------------------------------------',
'expires_in': 21599,
'refresh_token': '4I0------------------------------------------------',
'refresh_token_expires_in': 5183999,
'scope': 'talk_message profile',
'token_type': 'bearer'}
주의사항!! step2)에서 발급받은 인증code는 단 1번의 기회만 주어집니다.
실패가 나거나, 재 실행해야 할 경우 step2)로 다시 돌아가야 합니다.
즉, 동일한 인증code로 2번 이상 step3을 수행하지 않도록 해주세요.
Step 4) 토큰 저장
해당 token들은 계속 사용할 것이므로, 파일에 저장해 둡니다.
with open("kakao_token.json", "w") as fp:
json.dump(tokens, fp)
<< 다음에 보면 좋은글 >>
<< 참고 >>
access token의 유효시간이 지나면, refresh token을 이용해서 재발급 받아야 합니다.
참고 : 사용자 토큰 갱신하기
url = "https://kauth.kakao.com/oauth/token"
data = {
"grant_type" : "refresh_token",
"client_id" : "<REST_API 앱키를 입력하세요>",
"refresh_token" : "<refresh token을 입력하세요>"
}
response = requests.post(url, data=data)
print(response.json())
access token이 재발급되어 아래와 같은 결과를 갖습니다.
{'access_token': 'VMe------------------------------------------------',
'expires_in': 21599,
'token_type': 'bearer'}
저작물의 저작권은 작성자에게 있습니다.
공유는 자유롭게 하시되 댓글 남겨주세요~
상업적 용도로는 무단 사용을 금지합니다.
끝까지 읽어주셔서 감사합니다^^