<?php
session_start();
//included file and use
$app_id = 'xxx';
$app_secret = 'xxx';
FacebookSession::setDefaultApplication($app_id, $app_secret);
$helper = new FacebookRedirectLoginHelper("`http://example/facebook4.0`/", $app_id, $app_secret);
try
{
$session = $helper->getSessionFromRedirect();
}
catch(FacebookRequestException $ex) { }
catch(Exception $ex) { }
$loggedIn = false;
if (isset($session))
{
if ($session)
{
$loggedIn = true;
try { //logged here and get data
$user_profile = (new FacebookRequest(
$session, 'GET', '/me'
))->execute()->getGraphObject(GraphUser::className());
print_r($user_profile); //print data
}
catch(FacebookRequestException $e) {
echo "Exception occured, code: " . $e->getCode();
echo " with message: " . $e->getMessage();
}
}
}
if(!$loggedIn) //if user is not online // get link and add scope
{
$loginUrl = $helper->getLoginUrl(array('public_profile','email'));
echo "<a href='$loginUrl'>Login With Facebook</a>";
}
else
{
print_r($user_profile); //logout link is generated here
echo '<br><br><a href="index.php">Logout</a>'; //print to sceen
}
?>
I have set Domain name to localhost and Site URL to http://localhost/
.
I have also tried http://localhost:80
, http://mydomainname:80
(changing hosts)
this is error I get in response:
Facebook\FacebookSDKException Object
(
[message:protected] => Failed to connect to graph.facebook.com port 443: Network unreachable
[string:Exception:private] =>
[code:protected] => 7
[file:protected] => C:\xampp\htdocs\myapp\Facebook\HttpClients\FacebookCurlHttpClient.php
[line:protected] => 142
[trace:Exception:private] => Array
(
[0] => Array
(
[file] => C:\xampp\htdocs\myapp\Facebook\FacebookRequest.php
[line] => 248
[function] => send
[class] => Facebook\HttpClients\FacebookCurlHttpClient
[type] => ->
[args] => Array
(
[0] => https://graph.facebook.com/v2.0/oauth/access_token?client_id='my key'&redirect_uri=http%3A%2F%2Flocalhost%3A80%2Fmyapp%2F&client_secret='mykey_secert'&code=AQCYmzsFNUIQG7gUAZ3y-YJHLeIGcF-xyqHotx31MCJGlm16fV9VbVSzlGlx5280-u0Ho3jFjg_REevN5J0LEIPHerY1QaaBYjpkkoIMf6PCwHGj2OIrQDvfyGcUJRK4cJP0YQ8H8HdYw86xEhlcdJHvnObkCU6tSBcVbDWM8uoXJlRqNl6o-IdxoSfbk6IjuCreyagMXvam4vgV0HKxn0nkWaV26k1P6kQP_L1LtXXx2UyUQ1i0jJGL9JiGr1gsUbf5drY_URIrEWzawumpnSWkuxln8hiOtAr_xwM_4cBZwxf3_pWq8YnUotpmzzM5sPhW_ERMYWAdovjZPHu7Xdgs&access_token=329734847193179%7Cd9e5cdb2d0c3cbe1e127827762e94284&appsecret_proof='key_proof'
[1] => GET
[2] => Array
(
)
)
)
[1] => Array
(
[file] => C:\xampp\htdocs\myapp\Facebook\FacebookRedirectLoginHelper.php
[line] => 146
[function] => execute
[class] => Facebook\FacebookRequest
[type] => ->
[args] => Array
(
)
)
[2] => Array
(
[file] => C:\xampp\htdocs\myapp\index.php
[line] => 52
[function] => getSessionFromRedirect
[class] => Facebook\FacebookRedirectLoginHelper
[type] => ->
[args] => Array
(
)
)
)
[previous:Exception:private] =>
)
I know this is an old question and the OP might have already found the solution. I also bumped into the same issue while working with the Laravel Socialite plugin.
For posterity, I would like to post the solution here. The issue is explained in this question: the domain graph.facebook.com resolves to an IPV6 address which some networks may not be configured to route. You can request cURL to resolve IP addresses to their IPV4 values. Set the option
CURLOPT_IPRESOLVE
toCURL_IPRESOLVE_V4
.In the case of the socialite plugin, we had to modify the
FacebookProvider.php
to include the additional option.Edit
To be more specific, Socialite uses GuzzleHttp, and we need to pass this as a parameter to the GuzzleHttp Client method: