I am creating a web application using PHP and I would like to add login with facebook button in it's login page , how can i do it?
Ok so I am not a very good PHP developer, but here is possible solution
1 » Goto https://developers.facebook.com/apps/ and Click Add a New App.
» Choose Website
» Choose Name for you App and Click Create New Facebook App ID
» Choose a category for you App and click Create App ID
» Now Click Skip Quick Test
2. Install Facebook SDK to Your PHP Project
Now that your “Facebook app” is set up, it’s time to start coding. Facebook has made implementation very simple by providing an SDK for handling most of the heavy lifting. Installation instructions can be found at https://developers.facebook.com/docs/php/gettingstarted.
3. Create a login page
$fb = new Facebook\Facebook([
'app_id' => '{app-id}', // Replace {app-id} with your app id
'app_secret' => '{app-secret}',
'default_graph_version' => 'v2.2',
]);
$helper = $fb->getRedirectLoginHelper();
$permissions = ['email']; // Optional permissions
$loginUrl = $helper->getLoginUrl('https://example.com/fb-callback.php', $permissions);
echo '<a href="' . htmlspecialchars($loginUrl) . '">Log in with Facebook!</a>';
4. Create Callback Page
The callback page is where your website will ensure that the user is logged in to Facebook and has authenticated your website. If so, then you can authenticate them into your website.
// Ensure that sessions are started by this point using session_start()
<?php
$fb = new Facebook\Facebook([
'app_id' => '{app-id}',
'app_secret' => '{app-secret}',
'default_graph_version' => 'v2.2',
]);
$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
// 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);
// Get user’s Facebook ID
$userId = $tokenMetadata->getField('user_id');
?>
5. Pull Personal Information from Facebook
When registering a user to your website, it is often useful to store personal information into your database, such as the user’s name. The following code shows how to get a person’s name and user ID from the Facebook API. This example uses the $accessToken that was set in the code example in the previous section.
<?php
try {
// Returns a `Facebook\FacebookResponse` object
$response = $fb->get('/me?fields=id,name', $accessToken);
} catch(Facebook\Exceptions\FacebookResponseException $e) {
echo 'Graph returned an error: ' . $e->getMessage();
exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
echo 'Facebook SDK returned an error: ' . $e->getMessage();
exit;
}
$user = $response->getGraphUser();
$userId = $user['id']; // Retrieve user Id
$userName = $user['name']; // Retrieve user name
?>
The last two variables will contain the user ID and username. To pull additional information about the user, add the type to the API call (/me?fields=id,name) and then read the value(s) from the $user variable.
Another method
go to this URL
Now open the fbconfig.php file and add your app ID and app Secret. this tutorial facebook SDK PHP.
FacebookSession::setDefaultApplication( 'your app ID','App Secrete ' );
// login helper with redirect_uri
$helper = new FacebookRedirectLoginHelper('You web address' );
Finally, fbconfig.php file as shown below code how to login with Facebook -
<?php
session_start();
// added in v4.0.0
require_once 'autoload.php';
use Facebook\FacebookSession;
use Facebook\FacebookRedirectLoginHelper;
use Facebook\FacebookRequest;
use Facebook\FacebookResponse;
use Facebook\FacebookSDKException;
use Facebook\FacebookRequestException;
use Facebook\FacebookAuthorizationException;
use Facebook\GraphObject;
use Facebook\Entities\AccessToken;
use Facebook\HttpClients\FacebookCurlHttpClient;
use Facebook\HttpClients\FacebookHttpable;
// init app with app id and secret
FacebookSession::setDefaultApplication( 'your app ID','App Secrete ' );
// login helper with redirect_uri
$helper = new FacebookRedirectLoginHelper('http://www.phpcodingstuff.com/' );
try {
$session = $helper->getSessionFromRedirect();
}catch( FacebookRequestException $ex ) {
// When Facebook returns an error
}catch( Exception $ex ) {
// When validation fails or other local issues
}
// see if we have a session
if ( isset( $session ) ) {
// graph api request for user data
$request = new FacebookRequest( $session, 'GET', '/me' );
$response = $request->execute();
// get response
$graphObject = $response->getGraphObject();
$fbid = $graphObject->getProperty('id'); // To Get Facebook ID
$fbfullname = $graphObject->getProperty('name'); // To Get Facebook full name
$femail = $graphObject->getProperty('email'); // To Get Facebook email ID
/* ---- Session Variables -----*/
$_SESSION['FBID'] = $fbid;
$_SESSION['FULLNAME'] = $fbfullname;
$_SESSION['EMAIL'] = $femail;
/* ---- header location after session ----*/
header("Location: index.php");
}else {
$loginUrl = $helper->getLoginUrl();
header("Location: ".$loginUrl);
}
?>
And your Login page
<?php
session_start();
session_unset();
$_SESSION['FBID'] = NULL;
$_SESSION['FULLNAME'] = NULL;
$_SESSION['EMAIL'] = NULL;
header("Location: index.php");
?>
Index.php
<?php
session_start();
?>
<html xmlns:fb = "http://www.facebook.com/2008/fbml">
<head>
<title>How To Login With Facebook In Php With Example - Phpcodingstuff.com</title>
<link
href = "http://www.bootstrapcdn.com/twitter-bootstrap/2.2.2/css/bootstrap-combined.min.css" rel = "stylesheet">
</head>
<body>
<?php if ($_SESSION['FBID']): ?> <!-- After user login -->
<div class = "container">
<div class = "hero-unit">
<h1>Hello <?php echo $_SESSION['USERNAME']; ?></h1>
<p>Welcome to "facebook login" tutorial phpcodingstuff.com</p>
</div>
<div class = "span4">
<ul class = "nav nav-list">
<li class = "nav-header"><img src="https://i.imgur.com/76Chgd4.png"></li>
<li><img src = "https://graph.facebook.com/<?php
echo $_SESSION['FBID']; ?>/picture"></li>
<li class = "nav-header">Facebook ID</li>
<li><?php echo $_SESSION['FBID']; ?></li>
<li class = "nav-header">Facebook fullname</li>
<li><?php echo $_SESSION['FULLNAME']; ?></li>
<li class = "nav-header">Facebook Email</li>
<li><?php echo $_SESSION['EMAIL']; ?></li>
<div><a href="logout.php">Logout</a></div>
</ul>
</div>
</div>
<?php else: ?> <!-- Before login -->
<div class = "container">
<h1>Login with Facebook</h1>
<div>
<a href = "fbconfig.php"><img src="https://www.phpcodingstuff.com/uploads/tutorial_images/how_to_login_facebook_login_in_php.png"></a>
</div>
</div>
<?php endif ?>
</body>
</html>
That's it, you are done.
To check working example, see this link https://www.phpcodingstuff.com/blog/how-to-login-with-facebook-in-php-with-example.html
Subscribe to our weekly Newsletter & Keep getting latest article/questions in your inbox weekly