[코드] NAVER API AUTH

Kakao Share
//Login
<?php
    // 네이버 로그인 접근토큰 요청 예제
    $client_id = "ClientId";
    $redirectURI = urlencode("http://localhost/naver_api/auth/callback.php");
    $state = "RAMDOM_STATE";
    $apiURL = "https://nid.naver.com/oauth2.0/authorize?response_type=code&client_id=".$client_id."&redirect_uri=".$redirectURI."&state=".$state;
?>
<a href="<?php echo $apiURL ?>"><img height="50" src="http://static.nid.naver.com/oauth/small_g_in.PNG"/></a>

//Callback
<?php
    // 네이버 로그인 콜백 예제
    $client_id = "ClientId";
    $client_secret = "ClientSecret";
    $code = $_GET["code"];;
    $state = $_GET["state"];;
    $redirectURI = urlencode("http://localhost/naver_api/auth/callback.php");
    $url = "https://nid.naver.com/oauth2.0/token?grant_type=authorization_code&client_id=".$client_id."&client_secret=".$client_secret."&redirect_uri=".$redirectURI."&code=".$code."&state=".$state;
    $is_post = false;
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POST, $is_post);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $headers = array();
    $response = curl_exec ($ch);
    $status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    echo "status_code:".$status_code."<br>";
    curl_close ($ch);
    if($status_code == 200) {
        echo $response;
    } else {
        echo "Error 내용:".$response;
    }
?>

//Calendar Create  
<?php
    $token = "accessToken";
    $header = "Bearer ".$token; // Bearer 다음에 공백 추가
    $url = "https://openapi.naver.com/calendar/createSchedule.json";


    $calSum =  urlencode("[제목] 캘린더API로 추가한 일정");
    $calDes =  urlencode("[상세] 회의 합니다");
    $calLoc =  urlencode("[장소] 그린팩토리");
    $uid = substr($token, 0, 15);// UUID 생성 (임시로 일단 토큰값을 잘라서 사용)
    $scheduleIcalString = "BEGIN:VCALENDAR\n" .
                    "VERSION:2.0\n" .
                    "PRODID:Naver Calendar\n" .
                    "CALSCALE:GREGORIAN\n" .
                    "BEGIN:VTIMEZONE\n" .
                    "TZID:Asia/Seoul\n" .
                    "BEGIN:STANDARD\n" .
                    "DTSTART:19700101T000000\n" .
                    "TZNAME:GMT%2B09:00\n" .
                    "TZOFFSETFROM:%2B0900\n" .
                    "TZOFFSETTO:%2B0900\n" .
                    "END:STANDARD\n" .
                    "END:VTIMEZONE\n" .
                    "BEGIN:VEVENT\n" .
                    "SEQUENCE:0\n" .
                    "CLASS:PUBLIC\n" .
                    "TRANSP:OPAQUE\n" .
                    "UID:".$uid."\n" .                         // 일정 고유 아이디
                    "DTSTART;TZID=Asia/Seoul:20161116T180000\n" .  // 시작 일시
                    "DTEND;TZID=Asia/Seoul:20161116T183000\n" .    // 종료 일시
                    "SUMMARY:".$calSum." \n" .                    // 일정 제목
                    "DESCRIPTION:".$calDes." \n" .                // 일정 상세 내용
                    "LOCATION:".$calLoc." \n" .                   // 장소
                    //"RRULE:FREQ=YEARLY;BYDAY=FR;INTERVAL=1;UNTIL=20201231\n" .  // 일정 반복시 설정
                    "ORGANIZER;CN=관리자:mailto:admin@sample.com\n" . // 일정 만든 사람
                    "ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;CN=admin:mailto:user1@sample.com\n" . // 참석자
                    "CREATED:20161116T160000Z\n" .         // 일정 생성시각
                    "LAST-MODIFIED:20161116T160000Z\n" .   // 일정 수정시각
                    "DTSTAMP:20161116T160000Z\n" .         // 일정 타임스탬프
                    "END:VEVENT\n" .
                    "END:VCALENDAR";
    $postvars = "calendarId=defaultCalendarId&scheduleIcalString=".$scheduleIcalString;
    $is_post = true;
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POST, $is_post);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch,CURLOPT_POSTFIELDS, $postvars);
    $headers[] = "Authorization: ".$header;
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    $response = curl_exec ($ch);
    $status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    echo "status_code:".$status_code."
    ";
    curl_close ($ch);
    if($status_code == 200) {
        echo $response;
    } else {
        echo "Error 내용:".$response;
    }
?>
0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments

카카오톡 채널 친구추가
0
Would love your thoughts, please comment.x
()
x