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

2020-03-22 07:08发布

<?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] => 
)

1条回答
贼婆χ
2楼-- · 2020-03-22 07:56

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]
查看更多
登录 后发表回答