【问题标题】:Facebook->api("/me") raises "CurlException: 3: No URL set!"Facebook->api("/me") 引发“CurlException:3:未设置 URL!”
【发布时间】:2013-09-09 07:28:37
【问题描述】:

我有一个 iframe 页面选项卡 Facebook 应用程序,对于某些页面上的某些用户,它会引发“CurlException: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 变量提供,我将其存储到会话变量中以供进一步使用。

【问题讨论】:

  • 忘记提及在这些情况下出现的以下警告:“警告:curl_setopt_array() [function.curl-setopt-array]:数组键必须是 CURLOPT 常量或 (.. .)/base_facebook.php on line 963" 在我看来,它就像 Facebook api 中的一个错误,它试图为 curl_setopt() 官方文档 (php.net/manual/fr/function.curl-setopt.php) 中不存在的选项 CURLOPT_IPRESOLVE 设置一个值
  • 现在注释了使用 CURLOPT_IPRESOLVE 作为 curl_opt 的行,我得到以下异常:“CurlException: 7: Failed to connect to 2a03:2880:2110:3f07:face:b00c:0:1:网络无法访问”在我看来,某处的 Facebook 服务器会导致问题。不过,不知道这是否有意义或我应该如何处理。

标签: facebook curl facebook-php-sdk


【解决方案1】:

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

Facebook::$CURL_OPTS[CURLOPT_IPRESOLVE] = CURL_IPRESOLVE_V4;

然而,这种替代方案仅适用于 php large 5.3 版

解决方案:

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

【讨论】:

    猜你喜欢
    • 2013-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-13
    • 1970-01-01
    相关资源
    最近更新 更多