사용자 토큰값을 받기 위해 ajax api를 만들었습니다.
url = “https://kauth.kakao.com/oauth/token ”
headers = {
‘Content-Type’: ‘application/x-www-form-urlencoded’,
}
data = {
“grant_type” : “authorization_code”,
“client_id” : “REST_API 앱키”,
“redirect_uri” : “http://127.0.0.1:5001/umLogin ”,
“code” : “인가코드”
}
response = requests.post(url, headers=headers, data=json.dumps(data))
tokens = response.json()
tokens 값이
{u’error_code’: u’KOE010’, u’error_description’: u’Bad client credentials’, u’error’: u’invalid_client’}
이렇게 나오네요 Client Secret은 비 활성화 되어있습니다.
tim.l
7월 19, 2021, 10:28오전
#2
안녕하세요~
확인을 위해 앱 ID 알려주세요~
앱ID
https://developers.kakao.com/의 내 애플리케이션>앱 설정>요약 정보 : 기본정보에 있는 앱 ID
숫자로된 ID 입니다~
ex) 123456
인가코드는 1회성인가요?
인가코드 새로 발급 받은(A 인가코드) 즉시 사용자 토큰 요청하니 토큰값이 나오고 예 ) asd
다시 A 인가코드로 사용자 토큰 요청시 {u’error_code’: u’KOE320’, u’error_description’: u’authorization code not found for code=_okFrDcPvkBSu9BOs5JzN9II3by2hgHdGtMHOwIpgHMlXssuzDf9gnBTMCsidCeK0A32wgo9c-sAAAF6vlo6qA’, u’error’: u’invalid_grant’} 이렇게 뜨네요
asd 정보만 들고있으면 되는지 궁금합니다.
tim.l
7월 19, 2021, 10:49오전
#5
넵, 1회성입니다.
로그확인해보니 이미 사용된 인가코드를 재사용해서 KOE320 에러가 발생하고 있네요.
인가 요청으로 발급받은 후, 토큰 요청을 하고
재 요청 시, 인가 요청 부터 시작하도록 구성해주세요.
토큰을 받으셨다면 아래 시간동안 토큰을 이용하여 API 호출 가능합니다.
Android, iOS : 12시간
JavaScript: 2 시간
REST API : 6시간
사용자가 로그인 할때마다
인가 요청 후 발급-> 토큰 요청 후 토큰 발급 해야 하나요?
REST API : 6시간 이라고 하셨는데
인가 발급 후 토큰 요청 api를 계속 하니
인가가 잘못 되었다고 하네요
tim.l
7월 19, 2021, 11:09오전
#7
/oauth/authorize 하시고
리다이렉트 URI 에서 code 받아서 /oauth/token 하시고
다른 API 사용하시다가
다음 번 로그인 시에 /oauth/authorize 부터 하시면됩니다.
현재 에러 발생하는 이유는 /oauth/token 요청을 같은 코드로 두번 하셔서 그렇습니다.
이런 방법이 맞는지 궁금하네요
access_token이 유효 한지 확인 후(v1/user/access_token_info)
유효하지 않을 경우
oauth/authorize로 인가 코드 발급 후 -> access_token 재발급
access_token로 사용자 정보 확인(v2/user/me)
유효할 경우
access_token로 사용자 정보 확인(v2/user/me)
tim.l
7월 20, 2021, 1:13오전
#10
네, 액세스 토큰 유효성 확인후, 다시 인가 요청 하는 방법도 많이 사용합니다~
이런건 어떠실까요?
카카오 로그인으로 인가 요청->토큰요청-> 사용자 정보 확인 등
액세스 토큰 만료 시간 보다 짧게 사이트 세션 설정하시고
사이트 세션 만료되면 그냥 다시로그인 (로그인이 필요한 페이지 공통부에서 세션만료 체크만)
리다이렉트 URI 에서 토큰 요청 중 에러 발생하면 다시 로그인페이지로이동
유효성 여부를 체크하지 않고 유효한 Flow를 만들고 잘못된 경우 처음부터 다시 진행하는 것도 좋을 것같아요.