Używam Facebook Query Language (FQL), aby uzyskać informacje o użytkowniku, gdy znam już jego identyfikator. Kiedy wprowadzam następujący adres URL do przeglądarki Firefox, zwraca on poprawny kod XML dla żądania:

http://api.facebook.com/method/fql.query?query=SELECT nazwa FROM użytkownika WHERE uid= **

Mianowicie zwraca nazwę użytkownika.

Uwaga: proszę nie sugerować używania Graph API, ponieważ w rzeczywistości będę używał FQL do rzeczy, które nie są zaimplementowane w Graph, ale jak sieci, to tylko prosty przykład.

ALE, kiedy przechodzę do strony w mojej witrynie, która wykonuje następujący kod 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);

Widzę:

 Method Not Implemented

 Invalid method in request

To również nie powinno stanowić problemu z uwierzytelnianiem, nazwa jest czymś, co jest publicznie dostępne.

Aby uzyskać więcej informacji, kiedy wprowadzam jakiekolwiek zniekształcone żądanie FQL, strona PHP poprawnie zwraca błąd XML, tak jak w przypadku wpisywania adresu URL w Firefoksie. Dopiero gdy wprowadzę PRAWIDŁOWO UFORMOWANE żądanie FQL, różni się ono od tego, co widzę w Firefoksie, a mianowicie daje powyższy błąd, który nie jest nawet XML.

Jakieś pomysły? Dzięki.

0
user828835 15 lipiec 2011, 19:32

2 odpowiedzi

Najlepsza odpowiedź

Czy poprawnie kodujesz parametry zapytania? Wypróbuj coś takiego:

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

Możesz też użyć Facebook PHP SDK, który zrobi to automatycznie za Ciebie.

0
sagi 15 lipiec 2011, 19:35
Dziękuję, dopiero niedawno zacząłem używać PHP, a zwłaszcza cURL, i nie wiedziałem o tym.
 – 
user828835
15 lipiec 2011, 19:57

Nie wiem zbyt wiele o komunikatach o błędach związanych z FQL, ale zapytanie SQL ma być uciekinierem adresu URL (urlencode - http://php.net/manual/en/function.urlencode.php). Być może może to pomóc w twoim błędzie.

0
Jasper 15 lipiec 2011, 19:37