PHP에서 Facebook Login Access Token으로 이메일(Email) 정보 받아오기 [소스코드]
기타2019. 6. 3. 16:39
728x90
반응형
흔히 우리가 앱을 개발할 때는 페이스북(Facebook) 회원가입/로그인 기능을 구현하곤 합니다. 소셜 로그인 기능에서 가장 중요한 것은 서버에서 이를 검증하는 것입니다. 이미 페이스북 계정으로 가입이 된 사용자의 로그인을 처리하는 소스코드는 PHP로 다음과 같이 작성할 수 있습니다. 이 때 해당 서버에서는 이메일(Email)을 기준으로 회원을 구분한다고 가정합니다. 다시 말해 Facebook API로부터 Access Token으로 이메일 정보를 받아 와서, 그것으로 서버에서 로그인 처리를 시켜주는 것입니다.
이미 사용자가 앱에서 로그인을 했다고 가정하고, Access Token을 서버로 보냈을 때 이를 처리하는 예제입니다. 다음의 소스코드를 참고하시면 될 것 같습니다.
// 사용자로부터 Facebook 로그인 이후 Access Token을 받습니다.
$access_token = $this->input_check('access_token');
$client = new \GuzzleHttp\Client();
if($access_token == "") {
$this->output->set_status_header(400); // 입력 값 형식이 바르지 않습니다.
exit;
}
try {
// Facebook Graph API를 이용하여 Email 정보를 받아올 수 있습니다.
$response = $client->request('GET', 'https://graph.facebook.com/me?fields=name,email&access_token='.$access_token);
$body = $response->getBody();
if($response->getStatusCode() == 400) {
$this->output->set_status_header(500);
exit;
}
$json_response = json_decode($body, true);
// Facebook Graph API로부터 Email 정보를 받아와 출력합니다.
echo $json_response['email'];
/*
// 아래는 로그인 인증 수행을 위한 처리 로직 예제입니다.
$email_data['member_email'] = $json_response['email'];
$result = $this->model_login->check_signup_type($email_data);
if($result) {
switch($result->signup_type) {
case '0' :
$this->output->set_status_header(503); // 일반 회원으로 가입한 계정입니다.
exit; break;
default:
$info = $this->model_login->get_info_by_email($email_data);
if(empty($info)) {
$this->output->set_status_header(501); // 존재하지 않는 계정입니다.
exit;
}
$token = array(
"exp" => time() + (60 * 60 * 24 * 7), // Refresh Token의 유효 기간은 7일입니다.
"member_idx" => $info->member_idx,
"token_type" => "refresh_token"
);
$jwt = JWT::encode($token, $this->jwt_key);
$response = array("refresh_token" => $jwt);
echo json_encode($response);
}
} else {
$this->output->set_status_header(501); // 존재하지 않는 계정
exit;
}
*/
} catch (Exception $e) {
// 예외 처리를 진행합니다.
}
728x90
반응형
'기타' 카테고리의 다른 글
컴퓨터공학과 석사 대학원생의 일기 (0) | 2019.07.06 |
---|---|
인터넷으로 사업자 폐지 하는 방법 (홈택스 이용) (0) | 2019.06.24 |
구글 인 앱 결제(IAP) 서버 검증은 어떻게 하는가? [정리 요약] (1) | 2019.06.03 |
이사 갈 때 주소 변경과 관련한 Tip [정리 요약] (0) | 2019.06.03 |
병무청 입영일자 연기 방법 (인터넷 신청) (4) | 2019.06.01 |