create_access_token($auth_code);
//항상 scope = account_email profile임
//항상 token_type = bearer임
//토큰을 받아옴.
if (Util::array_get($result['expires_in'], -1) <= 0) {
$errCode = $result['error_code'] ?? '(NoCode)';
$error = $result['error'] ?? '(NoError)';
$errorDesc = $result['error_description'] ?? '(NoDesc)';
$msg = $result['msg'] ?? '(NoMsg)';
die("알 수 없는 에러: {$errCode},{$error},{$errorDesc},{$msg}");
}
$session = Session::getInstance();
$restAPI->set_access_token($result['access_token']);
$now = new \DateTimeImmutable();
$session->access_token = $result['access_token'];
$session->expires = $now->add(TimeUtil::secondsToDateInterval($result['expires_in']))->format('Y-m-d H:i:s');
$session->refresh_token = Util::array_get($result['refresh_token']);
$session->refresh_token_expires = $now->add(TimeUtil::secondsToDateInterval($result['refresh_token_expires_in']))->format('Y-m-d H:i:s');
$session->tmpx = Json::encode($result);
//echo "
\n";
$me = $restAPI->meWithEmail();
$oauth_mode = 'login';
$me['code'] = Util::array_get($me['code'], 0);
$signed = $me['has_signed_up']??false;
$kakao_account = $me['kakao_account']??[];
if(!($kakao_account['has_email']??false)||!($kakao_account['email']??false)){
$oauth_mode = 'req_email';
}
else if(!$signed){
$oauth_mode = 'join';
}
else if($me['code']< 0){
switch(Util::array_get($me['msg'])){
case 'NotRegisteredUserException':
$oauth_mode = 'join';
break;
default:
$oauth_mode = 'error';
}
}
else{
$session->kaccount_email = $kakao_account['email'];
}
?>