我使用Facebook的Facebook查询语言(FQL)来获取用户的信息,一旦我已经知道他的用户id。当我在Firefox中输入以下URL时,它会为请求返回正确的XML:
http://api.facebook.com/method/fql.query?query=SELECT name FROM user WHERE uid= **'
返回用户名。
注意:请不要建议使用图形API,因为我实际上会使用FQL来实现尚未在图形中实现的东西,如网络,这只是一个简单的例子。
但是,当我进入我网站上执行以下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。
任何想法?谢谢。
您是否正确编码查询参数?试试这样写:
$query = 'SELECT name FROM user WHERE uid=**********';
$url = 'http://api.facebook.com/method/fql.query?query=' . rawurlencode($query);
或者你可以使用Facebook PHP SDK,它会自动为你做这些。
我不太了解与FQL相关的错误消息,但SQL查询应该是url转义(urlencode - http://php.net/manual/en/function.urlencode.php)。