4 votes

Facebook FQL renvoie <fql_query_response list="true"/>

J'essaie de faire fonctionner une requête fql facebook à l'aide du navigateur, j'ai un jeton oauth valide (je peux faire des appels graph api avec).

Voici l'url que j'ai essayé :

https://api.facebook.com/method/fql.query?query=SELECT metric, value FROM insights WHERE object_id=89192912655 AND end_time=1280430050 AND period=86400 AND metric='page_fans'&access_token=?

J'ai aussi essayé de faire passer la requête fql par un encodeur sql d'abord :

https://api.facebook.com/method/fql.query?query=SELECT%20metric%2C%20value%20FROM%20insights%20WHERE%20object_id%3D89192912655%20AND%20end_time%3D1280430050%20AND%20period%3D86400%20AND%20metric%3D'page_fans'&access_token=?

J'ai essayé quelques autres mesures, je peux obtenir les mesures via l'api graphique également, donc je sais qu'elles sont là.

Je suis sûr que je fais quelque chose de stupide, mais je suis bloqué sur ce sujet depuis un moment maintenant ! Chaque appel ne renvoie que ceci :

<?xml version="1.0" encoding="UTF-8"?>
<fql_query_response xmlns="http://api.facebook.com/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" list="true"/>

Peut-être que mes dates sont un problème, j'ai utilisé ceci pour obtenir la date : (ruby)

t = Time.now
=> Tue Aug 03 15:00:50 -0400 2010
>> t = t - 5.days
=> Thu Jul 29 15:00:50 -0400 2010
>> t.to_i
=> 1280430050

Des idées ?

5voto

Nous avons confirmé ce bug. Cela est dû au fait que l'heure de fin doit être alignée avec les délimiteurs de jour dans PST pour que la table Insights puisse retourner des données. Pour résoudre ce problème, nous avons introduit deux fonctions personnalisées que vous pouvez utiliser pour interroger la table Insights :

  1. end_time_date() : accepte DATE sous forme de chaîne (par exemple '2010-08-01')
  2. period() : accepte 'lifetime', 'day', 'week' et 'month'.

Par exemple, vous pouvez maintenant interroger le tableau des connaissances en utilisant :

SELECT metric, value FROM insights
WHERE object_id = YOUR_APP_ID AND
      metric = 'application_active_users' AND
      end_time = end_time_date('2010-09-01') AND
      period = period('day');

Nous allons bientôt documenter ces fonctions, désolé pour tous les inconvénients !

P.S. Si vous ne souhaitez pas utiliser la fonction end_time_date(), assurez-vous que l'horodatage end_time de votre requête est aligné sur les délimiteurs de jour en PST.

Gracias.

Équipe Facebook Insights

1voto

rgabo Points 48

La réponse que vous voyez est une réponse vide, ce qui ne signifie pas nécessairement qu'il n'y a pas de données métriques disponibles. Voici quelques idées sur ce qui pourrait causer ce problème :

  • Utilisez-vous un jeton d'accès utilisateur ? Si oui, l'utilisateur est-il propriétaire de la page ? L'autorisation étendue 'read_insights' est-elle accordée à l'utilisateur / au jeton d'accès ? Et 'offline_access' ?
  • end_time doit être spécifié comme étant minuit, heure du Pacifique.
  • Les périodes valides sont 86400, 604800, 2592000 (jour, semaine, mois).
  • L'interrogation de la métrique "page_fan_adds" donne-t-elle des résultats significatifs pour une période donnée ?

Bien que je n'aie pas travaillé avec la table insights, le fait de travailler avec la FQL de Facebook m'a appris à ne pas m'attendre à des messages d'erreur, à des codes d'erreur, mais à essayer de suivre la documentation (si elle est disponible), puis à expérimenter avec elle...

Quant à la date, utilisez le code ruby suivant pour minuit, aujourd'hui :

Date.new(2010,9,14).to_time.to_i

J'ai également trouvé ce qui suit sur la page de documentation de l'API graphique :

Usurpation d'identité

Vous pouvez vous faire passer pour des pages administrées par vos utilisateurs en demandant l'autorisation étendue "manage_pages".

Une fois qu'un utilisateur a accordé à votre application la permission "manage_pages", la connexion "accounts" donnera une propriété access_token supplémentaire pour chaque page administrée par l'utilisateur actuel. Ces access_tokens peuvent être utilisés pour effectuer des appels au nom d'une page. Les permissions accordées par un utilisateur à votre application seront désormais également applicables à ses pages. ( source )

Avez-vous essayé de demander cette permission et d'utiliser &metadata=1 dans une requête de l'API graphique pour obtenir le jeton d'accès pour chaque compte ?

0voto

Roger Points 1036

Si vous voulez connaître le nombre de fans d'une page facebook, utilisez quelque chose comme :

https://graph.facebook.com/cocacola

La réponse contient un fan_count propriété.

0voto

Taryn East Points 9698

Je ne suis pas sûr que la date soit correcte. Voulez-vous vraiment que la date soit un nombre entier ? Habituellement, SQL prend les dates dans le format de la base de données, donc pour les formater, vous devez utiliser :

Date.new(2010,9,14).to_s(:db)
(Time.now - 5.days).to_s(:db)
# or even better:
5.days.ago.to_s(:db)

0voto

Artem Points 959

Si, comme moi, vous êtes venu ici après avoir obtenu ceci à partir d'une autre déclaration FQL, alors votre problème est de ne pas inclure le paramètre access_token, par ex.

[https://api.facebook.com/method/fql.query?query=SELECT+name+FROM+user+WHERE+uid+%3D+me()&access\_token=](https://api.facebook.com/method/fql.query?query=SELECT+name+FROM+user+WHERE+uid+%3D+me()&access_token=) ...

(Vous pouvez utiliser fb.getAccessToken())

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X