2011-01-30 4 views
0

J'utilise une boucle pour interroger FQL Facebook et cela est arrivé:curl requête à Facebook FQL nécessite auth?

> curl 'https://api.facebook.com/method/fql.query' -d "query=SELECT+now()+FROM+user+WHERE+name='Barry Carter';" 

<?xml version="1.0" encoding="UTF-8"?> 
<error_response xmlns="http://api.facebook.com/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://api.facebook.com/1.0/ http://api.facebook.com/1.0/facebook.xsd"> 
    <error_code>102</error_code> 
    <error_msg>Session key invalid or no longer valid</error_msg> 
    <request_args list="true"> 
    <arg> 
     <key>method</key> 
     <value>fql.query</value> 
    </arg> 
    <arg> 
     <key>query</key> 
     <value>SELECT now() FROM user WHERE name='Barry Carter';</value> 
    </arg> 
    </request_args> 
</error_response> 

Ai-je besoin d'authentifier même pour trouver des utilisateurs? Sur le site Web, vous pouvez faire sans authentification?

Si j'ai besoin d'authentification, comment l'obtenir? J'ai lu http://developers.facebook.com/docs/authentication mais ai-je besoin de tous les pour un simple appel curl? Si oui, que dois-je faire pour obtenir un jeton auth ? Ai-je besoin de stocker les cookies/etc (en utilisant les drapeaux -b et -c de curl?). Cette question est similaire à Facebook API - fql_query, Invalid session mais j'utilise curl droite, pas PHP.

Je réalise que la requête devrait être GET, pas POST, mais je suis assez sûr que ce n'est pas le problème.

Répondre

1

Oui, vous devez avoir un jeton d'authentification pour pratiquement toutes les requêtes que vous effectuez.

Ce n'est pas si difficile d'en acquérir un manuellement si vous ne faites que l'expérimenter. La façon la plus simple de le faire manuellement est de suivre la section "flux côté client" de la page doc d'authentification que vous avez liée en naviguant vers l'URL spécifiée dans votre navigateur, et utilisez http://www.facebook.com/connect/login_success.html comme URL cible (c'est juste une page fictive sur facebook .com, donc il est garanti de vous laisser passer), puis prenez le jeton d'accès dans la barre d'adresse.

+0

OK, donc quelque chose comme "https://www.facebook.com/dialog/oauth?client_id=YOUR_APP_ID&redirect_uri=YOUR_URL&response_type=token" avec YOUR_URL mis à http://www.facebook.com/connect/login_success .html? Il semble que j'ai encore besoin d'un VOTRE_APP_ID pour le faire? – barrycarter

+0

Oui, vous avez besoin d'un identifiant d'application. Ce n'est pas difficile d'en enregistrer un. – Yuliy