답변 2개
채택된 답변
+20 포인트
1년 전
</p>
<p>// callback.php
require_once '../common.php';</p>
<p>// 카카오 API를 통해 받은 코드를 사용하여 액세스 토큰을 요청합니다.
$code = $_GET['code'];
$token_url = '<a href="https://kauth.kakao.com/oauth/token';" target="_blank" rel="noopener noreferrer">https://kauth.kakao.com/oauth/token';</a>
$data = [
'grant_type' => 'authorization_code',
'client_id' => $client_id,
'redirect_uri' => $redirect_uri,
'code' => $code
];</p>
<p>$options = [
'http' => [
'header' => "Content-type: application/x-www-form-urlencoded\r\n",
'method' => 'POST',
'content' => http_build_query($data),
],
];</p>
<p>$context = stream_context_create($options);
$response = file_get_contents($token_url, false, $context);
$tokens = json_decode($response, true);</p>
<p>// 액세스 토큰을 사용하여 사용자 정보를 요청합니다.
$access_token = $tokens['access_token'];
$user_info_url = '<a href="https://kapi.kakao.com/v2/user/me';" target="_blank" rel="noopener noreferrer">https://kapi.kakao.com/v2/user/me';</a>
$options = [
'http' => [
'header' => "Authorization: Bearer " . $access_token,
'method' => 'GET',
],
];</p>
<p>$context = stream_context_create($options);
$response = file_get_contents($user_info_url, false, $context);
$user_info = json_decode($response, true);</p>
<p>// 사용자 정보를 이용하여 회원가입 또는 로그인 처리
$kakao_id = $user_info['id'];
$nickname = $user_info['properties']['nickname'];
$email = $user_info['kakao_account']['email'];</p>
<p>// 회원 존재 여부 확인
$sql = "SELECT * FROM {$g5['member_table']} WHERE mb_id = '{$kakao_id}'";
$member = sql_fetch($sql);</p>
<p>if (!$member) {
// 회원이 존재하지 않으면 자동 가입 처리
$sql = "INSERT INTO {$g5['member_table']} (mb_id, mb_email, mb_nick, mb_password, mb_datetime, mb_ip)
VALUES ('{$kakao_id}', '{$email}', '{$nickname}', PASSWORD('{$access_token}'), NOW(), '{$_SERVER['REMOTE_ADDR']}')";
sql_query($sql);
}</p>
<p>// 로그인 처리
set_session('ss_mb_id', $kakao_id);
set_session('ss_mb_nick', $nickname);</p>
<p>// 로그인 후 메인 페이지로 리디렉션
goto_url(G5_URL);
</p>
<p>
회원가입 여부를 확인하고, 존재하지 않으면 자동으로 가입한 후 로그인 상태를 유지하도록 변경해봤습니다.. 이를 통해 카카오톡 로그인 시 아이디와 비밀번호 입력 없이 바로 로그인할 수 있습니다. 참고 해서 적용해보시기 바랍니다.
로그인 후 평가할 수 있습니다
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인