Php 에서 rest api 로 토큰 받기

faq에 있는 php 코드로 태스트 중입니다.
오류 내용을 보면 redirect_uri 이 다르다고 나오는데요.
확인해보면 동일한걸로 확인이 됩니다.

오류가 나는 원인이 뭔가요?

아래는 오류 내용입니다.

{“error”:“invalid_grant”,“error_description”:“Redirect URI mismatch.”,“error_code”:“KOE303”}

안녕하세요!

위 에러는 인가코드를 받을때 사용된 redirect_uri와 토큰 요청의 redirect_uri 가 다른 경우 발생하는 에러입니다.
토큰 요청에 사용된 redirect_uri가 디벨로퍼스에 등록되어 있어도,
인가코드를 발급받을 때 사용된 redirect_uri와 다르다면 위 에러가 발생하게 됩니다.

인가코드 요청시의 redirect_uri와 토큰 요청의 redirect_uri가 동일한지 확인 부탁드립니다.

인가, 토큰 요청시 redirect_uri 값은 동일합니다.
구조자체가 그게 다르면 페이지호출 자체가 안되는거 아닌가요?

현재 작업된 내용은

인가요청은 javascript location 으로 인가 페이지에 설정값을 호출하는 방식이구요.
인가 요청시 정상 처리 되면 redirect_uri 에서 code 값을 받아서 그 페이지에서 curl로 토큰을 받을수 있게 작업했습니다.
당연히 호출할때 redirect_uri 값은 변수처리를 했기 때문에 동일한 값이 들어가 있구요.

인가값 호출
location.href = “https://kauth.kakao.com/oauth/authorize?client_id=<?=$KAKAO_CLIENT_ID?>&redirect_uri=<?=$KAKAO_REDIRECT_URI?>&response_type=code&state=<?=$kakaoState?>”;

토큰요청 (redirect_uri 코드)
$TOKEN_API_URL = “https://kauth.kakao.com/oauth/token”;
$params = sprintf( ‘grant_type=authorization_code&client_id=%s&redirect_uri=%s&code=%s&client_secret=%s’, $KAKAO_CLIENT_ID, $KAKAO_REDIRECT_URI, $code, $KAKAO_AUTH_SECRET);
$opts = array(
CURLOPT_URL => $TOKEN_API_URL,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_SSLVERSION => 1, // TLS
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $params,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HEADER => false
);

$curlSession = curl_init();
curl_setopt_array($curlSession, $opts);
$accessTokenJson = curl_exec($curlSession);
curl_close($curlSession);

print_r($accessTokenJson);

위와같이 되어있습니다.

사용하고 계신 앱의 앱아이디와 앱 이름을 알려주시면 추가로 확인해보도록 하겠습니다

앱소유아이디 : shnetworks@nate.com

앱이름 : 키즈콜
아이디 :

입니다.

아이디 부분에 앱키를 올려주셔서 답변내용에서 삭제했습니다.

키즈콜 서비스의 사용자토큰 요청기록을 확인해본 결과
사용자 토큰 요청시 Redirect URI 파라미터 값이 공백으로 시작하는 것을 확인했습니다.

redirect_uri는 사용자 토큰 요청과 인가코드 요청이 동일하지만 사용자토큰은 redirect_uri에 공백이 포함되어
서로 다른값이 됐고, 이로 인해 위 에러가 발생하고 있습니다.

토큰 요청에서 사용하시는 redirect_uri 앞에 공백을 지워주시면 에러가 해결될 것으로 보입니다.

네 해결되었습니다.
감사합니다.