하나의 php파일로 페이스북 로그인 하는 방법입니다!
먼저 개발자 페이지에서 개발자 아이디로 로그인 후 앱을 만들고
앱ID와 시크릿코드 를 얻어와야합니다.!!
페이지는 요깅!
https://developers.facebook.com/apps/
1. 대시보드 -> 설정 -> 기본설정
개발자 아이디로 로그인 하셨다면 먼저 앱을 만들어주시구요!(그건 생략하겠습니다.)
대시보드에 들어오면 이렇게 생긴 놈이 나옵니다.!
여기서 왼쪽 파란박스에 있는 설정->기본설정에 들어가셔서
앱ID(빨간 박스) 를 얻어와야하죠. 그 옆에있는 시크릿 코드도 얻어와야합니다. ㅠ 박스를 못쳤네요
그리고 앱 도메인을 적어주어야 합니다.
꼭 적어야 할걸요? 저는일단 자체서버에서 돌렸기 때문에
http://localhost/fb_oauth.php 입니다. (fb_oauth.php는 내가 작업할 파일 이름. 아래 코드 있음)
2. 앱이름(Facebook 로그인) -> 설정
이곳에 들어오셔서
1. 유효한 OAuth리디액션URI 에 http://localhost/fb_oauth.php (님들 파일경로)라고 적어줍니다.
2. 변경 내용을 꼭 저장해줍니다.
3. URI리디액션 유효성 검사를 꼭 해줍니다.
3. php sdk 다운로드
주소 : https://github.com/facebook/php-graph-sdk/tree/5.x
나는 일단 5 버전으로 받았다.!
저기서 clone or download 클릭 후 zip파일 다운로드해준다.
그리고 src라는 폴더를 dodcument root 파일안에 넣어준다..
설마 이것까지 설명해야 하는건 아니겠지? ㅎㄷㄷ
참고로 나는 MAMP 쓴다! ㅋㅋ
그리고 fb_oauth 파일 생성해주시고~
4. 코드작성 ㄱㄱㄱㄱㄱ
fb_oauth.php
<?php
session_start();
require_once __DIR__ . '/src/Facebook/autoload.php'; // download official fb sdk for php @ https://github.com/facebook/php-graph-sdk
$fb = new Facebook\Facebook([
'app_id' => 'APP_ID', //님의 앱ID 적어주세요
'app_secret' => 'APP_SECRET', //님의 시크릿코드 적어주세요
'default_graph_version' => 'v2.11',
]);
$helper = $fb->getRedirectLoginHelper();
$permissions = ['email']; // optional
try {
if (isset($_SESSION['facebook_access_token'])) {
$accessToken = $_SESSION['facebook_access_token'];
} else {
$accessToken = $helper->getAccessToken();
}
} catch(Facebook\Exceptions\FacebookResponseException $e) {
// When Graph returns an error
echo 'Graph returned an error: ' . $e->getMessage();
exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
// When validation fails or other local issues
echo 'Facebook SDK returned an error: ' . $e->getMessage();
exit;
}
if (isset($accessToken)) {
if (isset($_SESSION['facebook_access_token'])) {
$fb->setDefaultAccessToken($_SESSION['facebook_access_token']);
} else {
// getting short-lived access token
$_SESSION['facebook_access_token'] = (string) $accessToken;
// OAuth 2.0 client handler
$oAuth2Client = $fb->getOAuth2Client();
// Exchanges a short-lived access token for a long-lived one
$longLivedAccessToken = $oAuth2Client->getLongLivedAccessToken($_SESSION['facebook_access_token']);
$_SESSION['facebook_access_token'] = (string) $longLivedAccessToken;
// setting default access token to be used in script
$fb->setDefaultAccessToken($_SESSION['facebook_access_token']);
}
// redirect the user back to the same page if it has "code" GET variable
if (isset($_GET['code'])) {
header('Location: ./');
}
// getting basic info about user
try {
$profile_request = $fb->get('/me?fields=name,first_name,last_name,email');
$profile = $profile_request->getGraphNode()->asArray();
} catch(Facebook\Exceptions\FacebookResponseException $e) {
// When Graph returns an error
echo 'Graph returned an error: ' . $e->getMessage();
session_destroy();
// redirecting user back to app login page
header("Location: ./");
exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
// When validation fails or other local issues
echo 'Facebook SDK returned an error: ' . $e->getMessage();
exit;
}
// printing $profile array on the screen which holds the basic info about user
print_r($profile);
// Now you can redirect to another page and use the access token from $_SESSION['facebook_access_token']
} else {
// replace your website URL same as added in the developers.facebook.com/apps e.g. if you used http instead of https and you used non-www version or www version of your website then you must add the same here
$loginUrl = $helper->getLoginUrl('http://localhost/fb_oauth.php', $permissions);
echo '<a href="' . $loginUrl . '">Log in with Facebook!</a>';
}
출처 : https://github.com/sohaibilyas/facebook-php-sdk-v5/blob/master/login-on-website-get-basic-info.php
5. 결과화면
따란 이렇게 나온다 :)
이게 지금 로그인이 되어있어서 그런데
로그인 안되어있으면 Log in with Facebook! 이라고 나오고
클릭하면 저렇게 정보가 나온다!
음.. 로그아웃은 session destory 해주면 되지않을까?
일단 이렇게 마무으리 :)
다음엔 개발자 문서에 나와있는 대로
"일반적으로 Facebook 로그인은 하나의 PHP 스크립트로 구현되지만,
응답에 대한 제어 기능을 강화하고 구분을 명확하게 하기 위해 두 개의 개별 PHP 스크립트를 사용하는 것이 좋습니다."
라는 말을 따라 파일 두개로 나누어서 만들어 보겠다!
페이스북 PHP 개발자 로그인 예시 페이지 :
https://developers.facebook.com/docs/php/howto/example_facebook_login
구럼 이만!
'공부 > PHP' 카테고리의 다른 글
[오늘의 issue] Codeigniter에서 ajax가 왜 안먹는걸까..? (0) | 2018.02.22 |
---|---|
[오늘의 issue] getSessionFromRedirect return Null ! (0) | 2018.01.17 |
PHP에서 curl 설치 & 확장 (0) | 2018.01.11 |
php str_replace 문자변환 함수(쌍따옴표 변환 및 제거, 공백제거 등) (0) | 2018.01.04 |
CodeIgniter 내장 라이브러리 공부 (0) | 2017.12.29 |
댓글