Запрос FQL из PHP с использованием cURL, возвращающего «Метод не реализован» - PullRequest
0 голосов
/ 15 июля 2011

Я использую Facebook Query Language (FQL) для получения информации о пользователе, когда уже знаю его идентификатор. Когда я ввожу следующий URL в Firefox, он возвращает правильный XML для запроса:

http://api.facebook.com/method/fql.query?query=SELECT имя ОТ пользователя ГДЕ 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-код ошибки, так же как и при вводе URL-адреса в Firefox. Только когда я ввожу ПРАВИЛЬНО СФОРМИРОВАННЫЙ запрос FQL, он отличается от того, что я вижу в Firefox, а именно выдает ошибку, описанную выше, которая даже не является XML.

Есть идеи? Благодарю.

Ответы [ 2 ]

0 голосов
/ 15 июля 2011

Я не знаю много о сообщениях об ошибках, связанных с FQL, но предполагается, что SQL-запрос должен быть экранирован (urlencode - http://php.net/manual/en/function.urlencode.php). Возможно, это может помочь вашей ошибке.

0 голосов
/ 15 июля 2011

Правильно ли вы кодируете параметры запроса?Попробуйте что-то вроде:

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

Или вы можете использовать Facebook PHP SDK , который автоматически сделает это за вас.

...