문의 시, 사용하시는 개발환경과 디벨로퍼스 앱ID를 알려주세요. → 개발환경 PHP , ID: 926586’
안녕하세요~
외부 API 연결하는 과정에 있어 문의 좀 드리고자 합니다.
먼저 카카오로그인 API는 이상없이 진행되고 있습니다.
카카오로그인을 사용하여 등록된 정보를 외부 API로 전달하려고 하는데…
이과정에서 넘어가질 않아서…
이쪽에 문의를 해야 되는 상황인지 궁금하여 우선 문의 남겨봅니다.
PHP 파일 공유 드립니다.(ID/URL 삭제처리함)
<?php
$clientID = "";
$redirectURI = urlencode("URL/kakao_login.php");
if (!isset($_GET['code'])) {
$_SESSION['tt'] = $_GET['tt'];
$kakaoLoginUrl = "https://kauth.kakao.com/oauth/authorize?client_id={$clientID}&redirect_uri={$redirectURI}&response_type=code";
header("Location: " . $kakaoLoginUrl);
} else {
// Redirect URI로 인증 코드 받기
$code = $_GET['code'];
$tokenUrl = "https://kauth.kakao.com/oauth/token?grant_type=authorization_code&client_id={$clientID}&redirect_uri={$redirectURI}&code={$code}";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $tokenUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
$token = json_decode($response);
if(isset($token->access_token)) {
$userInfoUrl = "https://kapi.kakao.com/v2/user/me";
$header = "Bearer " . $token->access_token;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $userInfoUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: ' . $header));
$userInfo = curl_exec($ch);
curl_close($ch);
$data = json_decode($userInfo,1);
$name = $data['kakao_account']['name'];
$phone = $data['kakao_account']['phone_number'];
$phone = str_replace("+82 ","0", $phone);
$phone = str_replace("-","", $phone);
$email = $data['kakao_account']['email'];
$birthday = substr($data['kakao_account']['birthyear'], 2) . $data['kakao_account']['birthday'];
$gender = ($data['kakao_account']['gender'] == 'male') ? 'M' : 'F';
$referrer = $_SERVER['HTTP_REFERER'];
$ip_addr = $_SERVER['REMOTE_ADDR'];
$device_info = $_SERVER['HTTP_USER_AGENT'];
$field = $data['id'];
if(strpos($referrer, 'index.php') !== false){
$referrer=null;
}
$device1 = '';
if ($_SESSION['tt'] == 'pop') {
$device1 = ' POP';
}
if(isMobile()) {
$device = 'Mobile'.$device1;
} else {
$device = 'PC'.$device1;;
}
$ad_company = $_SESSION['company'];
$ad_channel = $_SESSION['path'];
$page_style = $_SESSION['page_style'];
$ip_area = getRegionFromIP($ip_addr);
$_SESSION['ip_area'] = $ip_area;
$sql = "INSERT INTO ld_customer set
name = '$name',
phone = '$phone',
email = '$email',
birthday = '$birthday',
gender = '$gender',
company_id = 1,
referrer = '$referrer',
ip_addr = '$ip_addr',
device_info = '$device_info',
device='$device',
field = '$field',
ad_company = '$ad_company',
ad_channel = '$ad_channel',
page_style = '$page_style',
ip_area = '$ip_area',
type = 'kakao'
";
$result = mysqli_query($conn, $sql);
if ($result) {
$apiResponse = sendAPI($name, $phone, $ip_area, $birthday, $gender);
$apiResult = $apiResponse;
$updateQuery = "UPDATE ld_customer SET result_check = :apiResult WHERE id = :lastInsertId";
$updateResult = $this->db->update($updateQuery, ['apiResult' => $apiResult, 'lastInsertId' => $result]);
}
$document_root = $_SERVER['DOCUMENT_ROOT'];
file_put_contents($document_root.'/data/'.$file_name.'.log', $log_data, FILE_APPEND);
$_SESSION['token']=null;
$utmSource = isset($_SESSION['utm_source']) ? $_SESSION['utm_source'] : 'default_source';
$utmMedium = isset($_SESSION['utm_medium']) ? $_SESSION['utm_medium'] : 'default_medium';
$utmCampaign = isset($_SESSION['utm_campaign']) ? $_SESSION['utm_campaign'] : 'default_campaign';
$utmTerm = isset($_SESSION['utm_term']) ? $_SESSION['utm_term'] : 'default_term';
$utmContent = isset($_SESSION['utm_content']) ? $_SESSION['utm_content'] : 'default_content';
$redirect_url = '/complete.php' . "?s=$ad_company&c=$ad_channel&ps=$page_style&name=$name&phone=$phone&gender=$gender&birthday=$birthday&type=kakao&utm_source=$utmSource&utm_medium=$utmMedium&utm_campaign=$utmCampaign&utm_term=$utmTerm&utm_content=$utmContent";
if ($result) {
echo "<script>
//alert('신청이 완료 되었습니다.');
window.opener.location.href = '".$redirect_url."';
self.close();
</script>
";
}
} else {
echo "인증 실패";
}
}
?>
★질문사항★
if ($result) {
$apiResponse = sendAPI($name, $phone, $ip_area, $birthday, $gender);
$apiResult = $apiResponse;
$updateQuery = "UPDATE ld_customer SET result_check = :apiResult WHERE id = :lastInsertId";
$updateResult = $this->db->update($updateQuery, ['apiResult' => $apiResult, 'lastInsertId' => $result]);
}
이부분을 추가했는데…
팝업이 열리고 멈추는 현상이 계속 되는데…
어떻게 하면 해결을 할수 있는지 궁금하여 문의 드립니다.
제가 개발자가 아니다 보니 자세하고 쉬운 답변 좀 부탁드립니다.
감사합니다.