PHP使用cURL返回“未实现的方法”的FQL查询

时间:2011-07-15 15:32:32

标签: php facebook curl connect facebook-fql

我使用Facebook的Facebook查询语言(FQL)来获取用户的信息,一旦我知道了他的用户ID。当我在Firefox中输入以下URL时,它会为请求返回正确的XML:

http://api.facebook.com/method/fql.query?query=SELECT名称来自用户WHERE uid = * * '

即返回用户名。

注意:请不要建议使用Graph API,因为我实际上将FQL用于未在Graph中实现的东西,就像网络一样,这只是一个简单的例子。

但是,当我访问我的网站上执行以下PHP代码的页面时:

        $url = 'http://api.facebook.com/method/fql.query?query=SELECT name FROM user WHERE uid=**********';
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        $response = curl_exec($ch);
        curl_close($ch);
        echo($response);

我明白了:

 Method Not Implemented

 Invalid method in request

这也不应该是身份验证问题,名称是公开可用的。

要获得更多信息,当我输入任何格式错误的FQL请求时,PHP页面会正确返回错误XML,就像在Firefox中输入URL时一样。只有当我输入一个正确形成的FQL请求时,它与我在Firefox中看到的不同,即它给出了上面的错误,甚至不是XML。

有什么想法吗?谢谢。

2 个答案:

答案 0 :(得分:0)

您是否正确编码了查询参数?尝试类似:

$query = 'SELECT name FROM user WHERE uid=**********';
$url = 'http://api.facebook.com/method/fql.query?query=' . rawurlencode($query);

或者您可以使用Facebook PHP SDK自动为您执行此操作。

答案 1 :(得分:0)

我对与FQL相关的错误消息了解不多,但SQL查询应该是url转义的(urlencode - http://php.net/manual/en/function.urlencode.php)。也许这可以帮助你解决错误。