Facebook Login Example

This example covers Facebook Login with the Facebook SDK for PHP.

Although it’s common to see examples of Facebook Login being implemented in one PHP script, is best to use two separate PHP scripts for more separation and more control over the responses.

In this example, the PHP script that generates the login link is called /login.php. The callback URL that Facebook redirects the user to after login dialog is called /fb-callback.php.

/login.php

$fb = new Facebook\Facebook([

‘app_id’ => ‘{app-id}’,

‘app_secret’ => ‘{app-secret}’,

‘default_graph_version’ => ‘v2.10’,

]);

$helper = $fb->getRedirectLoginHelper();

$permissions = [’email’]; // Optional permissions

$loginUrl = $helper->getLoginUrl(‘https://example.com/fb-callback.php’, $permissions);

echo ‘<a href=”‘ . $loginUrl . ‘”>Log in with Facebook!</a>’;

/fb-callback.php

$fb = new Facebook\Facebook([

‘app_id’ => ‘{app-id}’,

‘app_secret’ => ‘{app-secret}’,

‘default_graph_version’ => ‘v2.10’,

]);

$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;

}

// Logged in

echo ‘<h3>Access Token</h3>’;

var_dump($accessToken->getValue());

// The OAuth 2.0 client handler helps us manage access tokens

$oAuth2Client = $fb->getOAuth2Client();

// Get the access token metadata from /debug_token

$tokenMetadata = $oAuth2Client->debugToken($accessToken);

echo ‘<h3>Metadata</h3>’;

var_dump($tokenMetadata);

// Validation (these will throw FacebookSDKException’s when they fail)

$tokenMetadata->validateAppId($config[‘app_id’]);

// If you know the user ID this access token belongs to, you can validate it here

//$tokenMetadata->validateUserId(‘123’);

$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;

}

echo ‘<h3>Long-lived</h3>’;

var_dump($accessToken->getValue());

}

$_SESSION[‘fb_access_token’] = (string) $accessToken;

// User is logged in with a long-lived access token.

// You can redirect them to a members-only page.

//header(‘Location: https://example.com/members.php’);

Share this post
[social_warfare]
Facebook service class – Facebook\Facebook
Access Token and App Canvas Example

Get industry recognized certification – Contact us

keyboard_arrow_up