<?php
require_once HDPath . '/3rdParty/Facebook/autoload.php';
class FacebookLogin
{
function __construct()
{
//
if ( !empty( $_GET['b'] ) ) {
$MethodName = $_GET['b'];
switch( $MethodName ) {
case (preg_match('/\w/', $MethodName) ? true : false):
if ( method_exists(__CLASS__, $MethodName) ) {
$this->$MethodName();
exit;
}
break;
}
}
}
// 處理臉書登入後資訊一直到取得 access token 到對應的臉書基本資料
function OAuth()
{
$fb = new \Facebook\Facebook([
'app_id' => '2217899999992517',
'app_secret' => 'c0c5f3e28............aaadca6',
'default_graph_version' => 'v3.1'
]);
$helper = $fb->getRedirectLoginHelper();
try {
$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 ($helper->getError()) {
header('HTTP/1.0 401 Unauthorized');
echo "Error: " . $helper->getError() . "\n";
echo "Error Code: " . $helper->getErrorCode() . "\n";
echo "Error Reason: " . $helper->getErrorReason() . "\n";
echo "Error Description: " . $helper->getErrorDescription() . "\n";
} else {
header('HTTP/1.0 400 Bad Request');
echo 'Bad request';
}
exit;
}
$oAuth2Client = $fb->getOAuth2Client();
$tokenMetadata = $oAuth2Client->debugToken($accessToken);
$tokenMetadata->validateAppId('221787181332517'); // Replace {app-id} with your app id
$tokenMetadata->validateExpiration();
if (! $accessToken->isLongLived()) {
// Exchanges a short-lived access token for a long-lived one
try {
$accessToken = $oAuth2Client->getLongLivedAccessToken($accessToken);
} catch (\Facebook\Exceptions\FacebookSDKException $e) {
echo "<p>Error getting long-lived access token: " . $e->getMessage() . "</p>\n\n";
exit;
}
}
$GraphURL = 'https://graph.facebook.com/v3.1/me?fields=id,name,email';
$GraphURL .= '&access_token='. (string)$accessToken;
$GraphURL .= '&format=json&method=get&pretty=0';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $GraphURL);
curl_setopt($ch, CURLOPT_RETURNTRANSFER , 1);
$FBUserInfo = curl_exec($ch);
curl_close($ch);
// 使用者資訊
$UserInfo = json_decode($FBUserInfo, true);
print_r($UserInfo);
}
}