2026, 새로운 도약을 시작합니다.

네이버 로그인 직접구현시 활용팁

네이버 로그인 플로우

= 심사가 있어서 단계별로 절차를 체크하다가 정리해서 남깁니다.

  • 네이버 로그인 URL로 이동

  • callback.php 로 접근

  • callback.php에서 access_token 획득

  • 네이버 사용자 정보 조회

  • g5_member 테이블에 회원 존재 여부 확인

  • 없으면 회원 자동 가입

  • 있으면 해당 회원으로 세션 로그인 처리

  • 원하는 페이지로 redirect

[code]

<?php
$client_id = "네이버_CLIENT_ID";
$redirectURI = urlencode("https://도메인/naver/callback.php");
$state = md5(microtime().mt_rand());
$_SESSION['naver_state'] = $state;

$naverLoginUrl = "https://nid.naver.com/oauth2.0/authorize?response_type=code&client_id={$client_id}&redirect_uri={$redirectURI}&state={$state}";
?>
<a href="<?php echo $naverLoginUrl; ?>">네이버 로그인</a>
 

[/code]

[code]

<?php
include_once('../common.php'); // 그누보드 필수

$client_id     = "네이버_CLIENT_ID";
$client_secret = "네이버_CLIENT_SECRET";

$code  = $_GET["code"];
$state = $_GET["state"];

// state 체크 (보안 강화)
if($_SESSION['naver_state'] != $state) {
    die("Invalid State");
}

/* -------------------------------------------------------------------------- */
/*   1) 액세스 토큰 요청                                                      */
/* -------------------------------------------------------------------------- */
$token_url = "https://nid.naver.com/oauth2.0/token?grant_type=authorization_code"
            ."&client_id={$client_id}"
            ."&client_secret={$client_secret}"
            ."&code={$code}"
            ."&state={$state}";

$response = file_get_contents($token_url);
$token_data = json_decode($response, true);

$access_token = $token_data['access_token'];

/* -------------------------------------------------------------------------- */
/*   2) 사용자 정보 불러오기                                                  */
/* -------------------------------------------------------------------------- */
$header = "Authorization: Bearer ".$access_token;
$profile_url = "https://openapi.naver.com/v1/nid/me";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $profile_url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array($header));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$profile_response = curl_exec($ch);
curl_close($ch);

$profile = json_decode($profile_response, true);

if($profile['resultcode'] != "00") {
    die("NAVER API ERROR");
}

$naver_id    = $profile['response']['id'];
$nickname    = $profile['response']['nickname'] ?? '네이버사용자';
$email       = $profile['response']['email'] ?? '';
$name        = $profile['response']['name'] ?? '';

/* -------------------------------------------------------------------------- */
/*   3) g5_member 테이블에서 회원 존재 여부 확인                             */
/* -------------------------------------------------------------------------- */
$sql = "SELECT * FROM g5_member WHERE mb_naver_id = '$naver_id'";
$mb = sql_fetch($sql);

/* -------------------------------------------------------------------------- */
/*   4) 신규 회원이면 자동 회원가입                                           */
/* -------------------------------------------------------------------------- */
if(!$mb['mb_id']) {

    // mb_id 생성 방식: naver_ + 해시
    $new_mb_id = "naver_".substr($naver_id, 0, 15);

    $now = G5_TIME_YMDHIS;

    $sql = "
        INSERT INTO g5_member SET
            mb_id = '{$new_mb_id}',
            mb_naver_id = '{$naver_id}',
            mb_name = '{$name}',
            mb_nick = '{$nickname}',
            mb_email = '{$email}',
            mb_datetime = '{$now}',
            mb_ip = '{$_SERVER['REMOTE_ADDR']}',
            mb_level = 2
    ";
    sql_query($sql);

    // 다시 조회
    $mb = get_member($new_mb_id);
}

/* -------------------------------------------------------------------------- */
/*   5) 그누보드 회원 세션 로그인 처리                                       */
/* -------------------------------------------------------------------------- */
set_session('ss_mb_id', $mb['mb_id']);
set_session('ss_mb_key', md5($mb['mb_datetime'] . $_SERVER['REMOTE_ADDR']));

/* -------------------------------------------------------------------------- */
/*   6) 로그인 후 리다이렉트                                                  */
/* -------------------------------------------------------------------------- */
goto_url('/'); // 원하는 페이지로 이동
 

[/code]

[code]

ALTER TABLE g5_member ADD mb_naver_id varchar(50) DEFAULT NULL;

[/code] 

|

댓글 1개

좋은 정보 감사합니다.

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

그누보드5 팁자료실

번호 제목 글쓴이 날짜 조회
공지 3년 전 조회 4,592
2741 어제 조회 76
2740 3일 전 조회 82
2739 1주 전 조회 194
2738 1주 전 조회 200
2737 1주 전 조회 169
2736 1주 전 조회 268
2735 2주 전 조회 274
2734 3주 전 조회 255
2733 1개월 전 조회 258
2732 1개월 전 조회 293
2731 1개월 전 조회 260
2730 1개월 전 조회 218
2729 1개월 전 조회 343
2728 1개월 전 조회 238
2727 1개월 전 조회 413
2726 1개월 전 조회 248
2725 1개월 전 조회 322
2724 1개월 전 조회 352
2723 1개월 전 조회 259
2722 1개월 전 조회 293
2721 1개월 전 조회 205
2720 2개월 전 조회 298
2719 2개월 전 조회 302
2718 2개월 전 조회 196
2717 2개월 전 조회 328
2716 2개월 전 조회 198
2715 2개월 전 조회 305
2714 2개월 전 조회 266
2713 2개월 전 조회 369
2712 2개월 전 조회 284
🐛 버그신고