PHP에서 curl로 /oauth/token API를 호출하여 access token 얻는 방법

/oauth/authorize API를 호출하고 [동의] 버튼을 누르면 code 파라미터를 url로 전달 받을 수 있고, 그 다음에 /oauth/token API를 사용하여 access token을 요청합니다. php에서 대개의 경우에는 CURLOPT_POSTFIELDS 필드에 Array 형태로 파라미터를 전달하지만 /oauth/token API에서는 Query String 형태로 넘겨야 정상적인 응답을 받을 수 있습니다.

<?php 
 $CLIENT_ID     = "[생성한 App의 REST API KEY를 입력하세요.]"; 
 $REDIRECT_URI  = "[App의 사이트 설정 정보의 REDIRECT URI를 입력하세요.]"; 
 $TOKEN_API_URL = "https://kauth.kakao.com/oauth/token"; 

 $code   = $_GET["code"]; 
 $params = sprintf( 'grant_type=authorization_code&client_id=%s&redirect_uri=%s&code=%s', $CLIENT_ID, $REDIRECT_URI, $code); 

 $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); 

 echo $accessTokenJson; 
?>
3개의 좋아요

질문이 있습니다. 결국 code 값을 얻어 낼려면 사용자의 엑션이 필요 한거네요…

code 값을 얻어 낼려면 /oauth/authorize api를 호출 해서 사용자가 직접 로그인을 해야지만 code 값이 나와서 그 코드값을 다시 redirect_URI로 보내면 위 소스가 실행 되는게 맞죠?

하고 싶은것은
서버에서 컨텐츠를 자동으로 카카오스토리에 자동으로 포스팅을 하고 싶은데요… 혹시 방법이 없나요?

@reporter 사용자의 action(ID/Password 입력) 없이 서버에서 자동으로 로그인을 시키는 방법은 제공하지 않고 있습니다. 여러 보안상 발생할 수 있는 이슈로 해당기능이 정책적으로 지원되지 않고 있어요~

자신의 카카오스토리에 올리는 것은 최초에 code 값을 이용해서 access_token, refresh_token 을 얻어오고…

access_token 실어서 글 올리고,

토큰 만료 방지를 위해서 주기적으로 refresh_token 을 이용해서 token 을 갱신한다면 가능하지 않을까 싶네요.

CURLOPT_SSLVERSION => 1 

뒤의 쉼표는 빠진건가요?

1개의 좋아요

안녕하세요, 저는 코르도바 / 폰갭과 카카오 SDK를 사용하여 웹 응용 프로그램을 만드는 오전,하지만 로컬 작동하지 않습니다(キャッチされていないKakaoError:kakao.jsは、Webサーバからロードする必要があります). 내가 알고있는 것처럼이 불가능하지만 REST API를 사용하여 OAuth를 가능 보이지만, 때문에 내 지식의 부족으로 나는 그것이 작동 할 수 없습니다. 나는이가 통역에 의해 기록 된대로, 당신의 언어로 쓸 미리 사과드립니다. 아무도 나를 도와 드릴까요?