Facebook->api(“/me”)引发“异常:3:未设置URL!”

Facebook->api(“/me”)引发“异常:3:未设置URL!”,facebook,curl,facebook-php-sdk,Facebook,Curl,Facebook Php Sdk,我有一个iframe页面标签facebook应用程序,对于某些页面上的某些用户,它会引发一个例外:3:没有URL设置!调用$facebook->api/me时出现异常 代码如下: $config = array(); $config['appId'] = APPID; $config['secret'] = APPSECRET; $config['cookie'] = true; $config['fileUpload'] = false; // optional $facebook = ne

我有一个iframe页面标签facebook应用程序,对于某些页面上的某些用户,它会引发一个例外:3:没有URL设置!调用$facebook->api/me时出现异常

代码如下:

$config = array();
$config['appId'] = APPID;
$config['secret'] = APPSECRET;
$config['cookie'] = true;
$config['fileUpload'] = false; // optional

$facebook = new Facebook($config);

$facebook->setExtendedAccessToken();

$access_token = $facebook->getAccessToken();

if (isset($_GET['tk'])&&($_GET['tk']!="")){
$_SESSION['appat'] = $_GET['tk'];
}

if ($_SESSION['appat']!="")
$access_token = $_SESSION['appat'];

$facebook->setAccessToken($access_token);       

$user = $facebook->getUser();

if ($user) {
    try {
        $user_profile = $facebook->api('/me');
    } catch (FacebookApiException $e) {
        trace("exception $e");
    }
}

注意:Javascript sdk将访问令牌作为应用程序主页上接收到的GET变量提供,我将其存储到会话变量中以供进一步使用。

由于IPV6存在问题,您应该在facebook api中包含以下行

Facebook::$CURL_OPTS[CURLOPT_IPRESOLVE] = CURL_IPRESOLVE_V4;
但是,此替代方案仅适用于php 5.3版

解决方案:

if((phpversion()>= 5.3))
{ 
   Facebook::$CURL_OPTS[CURLOPT_IPRESOLVE] = CURL_IPRESOLVE_V4; 
}

忘记提及在这些情况下出现的以下警告:警告:curl_setopt_array[function.curl setopt array]:数组键必须是CURLOPT常量或第963行…/base_facebook.php中的等效整数值。在我看来,这就像facebook api中的一个bug,它试图为CURLOPT_IPRESOLVE选项设置一个值,而curl_setopt官方文档中不存在,因为现在使用CURLOPT_IPRESOLVE作为curl_opt的行被注释了,我得到了以下异常:CurlException:7:无法连接到2a03:2880:2110:3f07:face:b00c:0:1:无法访问网络在我看来,好像某个Facebook服务器导致了问题。我不知道这是否有意义,也不知道我应该如何处理。