Failed to connect to graph.facebook.com port 443: Network unreachable

12,465

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 to CURL_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:

'curl' => [ CURLOPT_IPRESOLVE => CURL_IPRESOLVE_V4]
Share:
12,465
Null Pointer
Author by

Null Pointer

Null Pointer

Updated on June 18, 2022

Comments

  • Null Pointer
    Null Pointer almost 2 years
    <?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] => 
    )
    
  • Ravi Ranjan Singh
    Ravi Ranjan Singh almost 7 years
    In which file do we need to include this code? Thanks
  • thunder413
    thunder413 over 6 years
    Thanks ! saved my day