require $_SERVER['DOCUMENT_ROOT'].'/lib/global.php';
//echo "ok";
//print_r($_GET);
//주요 값들
$gclient_id = "622548621466-fukfbml0af6tj1oa0brqv1s6jaeavjch.apps.googleusercontent.com";
$gclient_secret = "sh-A_IGsO4Oi9SB7wIJGxO99";
$redirection_uri = "https://lifeadvisor.ncue.net/google_proc.php";
$scope = "https://mail.google.com/";
//보낼 쿼리 만들기
$sendQuery ="code=".$_GET["code"]."&client_id=".$gclient_id."&client_secret=".$gclient_secret."&redirect_uri=".urlencode($redirection_uri)."&grant_type=authorization_code";
//보낼 데이터를 만들어 주기 위한 기본값을 설정합니다.
$endline = "\r\n";
$req = "";
//구글에서 요청한 필수 헤더를 추가합니다.
$req .= "POST /oauth2/v4/token HTTP/1.1".$endline."Connection: Close".$endline;
//헤더의 끝을 표시하는 빈 문자열을 설정합니다.
$req .= $endline;
//내용을 추가해 보내어 줍니다.
$req .= $sendQuery;
//해당 구글 서버와 연결을 시도합니다.
$fsock= @fsockopen("ssl://www.googleapis.com",443);
//구글 서버에 접속 실패한 경우.
if(!$fsock)
{
echo "구글 서버에 접속 실패하였습니다.!";
exit;
}
//데이터 보내기를 합니다.
fwrite($fsock,$req);
//데이터 받기를 위해 필요한 값들을 선언합니다.
$headPassed = false;
$TokenJson = "";
//데이터 받기가 완료될 때 까지 대기하면 데이터를 받아 출력합니다.
while(!feof($fsock))
{
//한 줄 라인을 가지고 옵니다.
$line = fgets($fsock,128);
//아직 헤더는 아니지만, 헤더의 끝을 만난 경우, 헤더가 끝났음을 마킹하고, 종료합니다.
if($line=="\r\n" && !$headPassed)
{
$headPassed = true;
continue;
}
//헤더가 아닌 경우만, 값을 출력하도록 합니다.
if($headPassed)
{
$TokenJson .= $line;
}
}
//연결을 닫아 주도록 합니다.
fclose($fsock);
//echo $TokenJson;
//받아온 Token Json을 토큰 객체로 만들어 줍니다.
$TokenObj = json_decode($TokenJson);
//echo $TokenJson;
//받아 온 토큰을 출력합니다.
//print_r($TokenObj);
//보낼 문장을 만들어 줍니다.
$userinfor_req = "GET /gmail/v1/users/me/profile HTTP/1.1".$endline."Authorization:Bearer ".$TokenObj->access_token.$endline."Host: www.googleapis.com".$endline."Connection: Close".$endline.$endline;
//해당 구글 서버와 연결을 시도합니다.
$fsock = fsockopen("ssl://www.googleapis.com",443);
//구글 서버에 접속 실패한 경우
if(!$fsock)
{
echo "구글 서버에 접속 실패하였습니다.";
exit;
}
//데이터 보내기를 합니다.
fwrite($fsock,$userinfor_req);
//데이터 받기를 위해 필요한 값들을 선언
$headPassed = false;
$profileJson = "";
while(!feof($fsock))
{
//한 줄 라인을 가지고 옵니다.
$line = fgets($fsock,128);
//아직 헤더는 아니지만, 헤더의 끝을 만난 경우, 헤더가 끝났음을 마킹하고, 종료합니다.
if($line=="\r\n" && !$headPassed)
{
$headPassed = true;
continue;
}
//헤더가 아닌 경우만, 값을 출력하도록 한다.
if($headPassed)
{
$profileJson .= $line;
}
}
//연결 닫기
fclose($fsock);
//가지고 온 유저 데이터를 출력하도록 한다.
//echo $profileJson;
//exit;
if(!$profileJson)
{
$profileArray = json_decode($profileJson);
$m_id = $profileArray[0]["emailAddress"];
$chkProfile = getValue("_MEMBER"," where m_id='".$m_id."' and m_logintype='google'","ar","*");
if($chkProfile)
{
$MEMIDX = $chkProfile["m_idx"];
if($chkProfile["m_level"]=="user")
{
$_SET_LEVEL = "1";
$locationUrl = "index.siso";
}else{
$_SET_LEVEL = "0";
$locationUrl = "reg_profile.siso?idx=".$MEMIDX;
}
}else{ //회원가입을 시킨후 보낸다.
$isql = "insert into _MEMBER set m_id='".$m_id."', m_pass='".$profileArray[0]["historyId"]."', m_email='".$m_id."', regdate = now(), m_ip = '".$_SERVER["REMOTE_ADDR"]."', m_agent = '".$_SERVER["HTTP_USER_AGENT"]."', m_expire_date = '0000-00-00', m_expire_time = '00:00:00', m_use = 'Y', m_level = 'user', m_lastlogindate = now(), m_logintype='facebook' ";
$irs = query($isql);
if($irs)
{
$MEMIDX = insert_id();
$SET_LEVEL = "0";
$locationUrl = "reg_profile.siso?idx=".$MEMIDX;
$maillink = "https://lifeadvisor.ncue.net/mailaccept.php?midx=".$MEMIDX."&memail=".$m_id;
$mailcontents = "아래 이메일 주소를 클릭하여 정식회원이 되세요.
인증 하기";
//1. 이메일 인증 메일 전송
//$sendMail = sendMail('yds5004@naver.com', '인연톡', '인연톡 이메일 인증' ,$mailcontents, $m_id, "인연톡 임시회원", true);
}else{
echo ("
");
exit;
}
}
//회원이 로그인처리했다고 파악하고 세션 생성후 메인페이지로 보낸다.
setSession('_IDX', $MEMIDX);
setSession('_LEVEL', $_SET_LEVEL);
setSession('ltype', "google");
setCookie('_LEVEL', $_SET_LEVEL, time()+2678400, '/', '.'._HOST);
setCookie('_PW_NPLACE_SAVE',$m_id, time()+2678400,'/', _HOST);
echo ("
");
exit;
}else{
echo ("
");
exit;
}
?>