Created
July 27, 2017 03:25
-
-
Save rafinkarki/1eae8d47bc9ab88da4b095996fa829d2 to your computer and use it in GitHub Desktop.
Facebook SDK connection
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
session_start(); | |
include_once('community/config.php'); | |
require_once 'src/Facebook/autoload.php'; | |
$fb = new Facebook\Facebook([ | |
'app_id' => $config['fb_api'], | |
'app_secret' => $config['fb_secret'], | |
'default_graph_version' => 'v2.4', | |
]); | |
$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/git/andto/rafin.php', $permissions); | |
echo '<a href="' . $loginUrl . '">Log in with Facebook!</a>'; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment