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

我的未来我决定 提交于 2019-12-30 09:28: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:


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]


来源:https://stackoverflow.com/questions/25131564/failed-to-connect-to-graph-facebook-com-port-443-network-unreachable

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!