Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Facebook SDK PHP 5.0 getLoginUrl() Error 500

I am trying to use the examples provided under Facebook PHP SDK 5.0 to login to Facebook. I am getting back 500 Internal Server Error. I am using the Baby Plan from HostGator which is running Php 5.5.27 PHP INFO . Is there configuration I would need to add to my server to get things working?

login.php

<?php
session_start();
// Include the required dependencies.
require_once( 'vendor/autoload.php' );
// Initialize the Facebook PHP SDK v5.
$fb = new Facebook\Facebook([
  'app_id'                => '495994870548274',
  'app_secret'            => '593f18b375c9e23d34b9794136cf7158',
  'default_graph_version' => 'v2.3',
]);

$helper = $fb->getRedirectLoginHelper();

$permissions = ['email']; // Optional permissions
$loginUrl = $helper->getLoginUrl('http://techcomsgb.com/kidneytest/login-callback.php', $permissions);

echo '<a href="' . $loginUrl . '">Log in with Facebook!</a>'

login-callback.php

<?php
session_start();

// Include the required dependencies.
require_once( 'vendor/autoload.php' );



// Initialize the Facebook PHP SDK v5.
$fb = new Facebook\Facebook([
  'app_id'                => '495994870548274',
  'app_secret'            => '593f18b375c9e23d34b9794136cf7158',
  'default_graph_version' => 'v2.3',
]);

$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: " . $helper-    >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');

like image 871
user803271 Avatar asked Feb 02 '26 17:02

user803271


1 Answers

I had this error too. Most of the things was in the hosting side. I fixed by doing some things.

  1. Check the hosting PHP version 5.4 or higher
  2. Check mbstring enabled
  3. Set mbstring values in the php.ini

MBString Values Sample Image

See more: https://benmarshall.me/facebook-php-sdk/#requirements

Then, in the callback.php Facebook Exceptions wasn't working so I change it to the PHP Exception Method like this:

try {
    $accessToken = $helper->getAccessToken();  
} catch(Exception $e) {
    // There was an error communicating with Graph  
    echo $e->getMessage();       
    exit;  
}

Then I get the error message. It was the date.timezone, I added in the php.ini file and now everything is working.

[date] date.timezone = "America/Los_Angeles"
like image 102
Tony Lopez Avatar answered Feb 04 '26 07:02

Tony Lopez



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!