Accès aux données à partir de la réponse de FB.(api)
Je vais avoir des difficultés pour accéder à la réponse JSON retourné les données de la nouvelle Facebook JS SDK nouveau Graphe des appels d'API.
Par exemple, dans certains de leurs docs où ils sont à l'aide de l'ancienne façon d'utiliser le SDK , ils obtenir un pointeur vers les données en réponse[0]
mais ici, c'est montrer que vous avez besoin d'utiliser la réponse.data[0] au lieu de: http://developers.facebook.com/tools/console/ (cliquez sur fb.api — photo-albums)
Alors, qui est-il? Je sais qu'avec mon code ci-dessous, si j'ai essayer d'utiliser de réponse[0] type de syntaxe pour obtenir le retour JSON-je obtenir de l'indéfini.
Si j'utilise de réponse[0].longueur je reçois aussi pas défini
Mais si j'essaie de réponse.data[0].longueur, j'obtiens 2, qui je pense est le retour JSON ou mes 2 albums..je ne sais pas comment jouer avec cet objet renvoyé en termes de syntaxe et de la manipuler, de ses propriétés, etc.
Je veux à la fin, d'analyser le retour JSON à l'aide de jQuery parseJSON
méthode, mais n'ont aucune idée de comment passe même le droit de syntaxe ici pour la réponse et de n'utiliser que la réponse de l'objet.
FB.api(uri, function(response)
{
alert("response: " + response);
//check for a valid response
if (response == "undefined" || response == null || !response || response.error)
{
alert("error occured");
return;
}
alert("response length: " + response.data.length);
}
cette alerte m'a donné 2 qui a du sens. J'ai 2 albums.
ensuite, j'ai essayé quelque chose comme réponse.data[0] et essayé un jQuery parseJSON(response.data)
ou parseJSON(response.data[0])
sur que et il ne fonctionne pas. Si quelqu'un peut m'expliquer l'objet de réponse ici, comme en ce qui concerne Facebook, je suppose? Je ne vois pas de docs sur la façon d'utiliser cet objet renvoyé à tous et comment elle est construite.
Mise à JOUR:
Ok, voici donc l'intégralité de l'analyse de la méthode de la tentative que j'ai écrasé jusqu'à présent. Je ne sais pas si le jQuery analyse est 100% bon code encore, j'ai écrasé qu', mais je ne peux même pas test jusqu'à ce que j'ai à comprendre comment utiliser cet objet de réponse de revenir. Je sais qu'il est de retour JSON parce que j'ai analysé un autre facebook de réponse de l'objet dans une autre méthode dans le JS SDK donc à peu près sûr que la réponse[0] ou de la réponse.data[0] vous donnera la chaîne JSON.
function GetAllFacebookAlbums(userID, accessToken)
{
alert("inside GetAllFacebookAlbums(userID, acessToken)");
var dFacebookAlbums = {}; //dictionary
var uri = "/" + userID + "/albums?access_token=" + accessToken;
//var uri = "/me/albums";
alert("get albums uri: " + uri);
FB.api(uri, function(response)
{
alert("response: " + response);
//check for a valid response
if (response == "undefined" || response == null || !response || response.error)
{
alert("error occured");
return;
}
alert("response length: " + response.data.length);
for (var i=0, l=response.data.length; i<l; i++)
{
alert("response[key]: " + response.data[i].Name);
}
//parse JSON from response
var dJSONObjects = jQuery.parseJSON(response.data);
alert("dJSONObjects: " + dJSONObjects);
if (dJSONObjects.length == 0)
return;
//iterate through the dictionary of returned JSON objects
//and transform each to a custom facebookAlbum object
//then add each new FacebookAlbum to the final dictionary
//that will return a set of facebookAlbums
$.each(json.attributes, function () {
//add a new album to the dictionary
aFacebookAlbums[i] = FacebookAlbum(
jsonObject["id"],
jsonObject["name"],
jsonObject["location"],
jsonObject["count"],
jsonObject["link"]
);
});
});
return dFacebookAlbums;
}
OriginalL'auteur PositiveGuy | 2010-07-26
Vous devez vous connecter pour publier un commentaire.
Il dépend de l'API utilisée. Pour la nouvelle API Graphique des objets uniques revenir le plus haut niveau de l'objet: http://graph.facebook.com/naitik -- où, comme les collections de revenir avec un haut niveau de données propriété qui est un
Array
: http://graph.facebook.com/zuck/feed. Il y a aussi l'introspection pour rendre les choses un peu plus facile: http://developers.facebook.com/docs/api#introspection. FQL est l'autre appel de l'API, et c'est là que le premier niveau de réponse est array (pense lignes dans SQL) c'est pourquoi quelques exemples d'utiliserresponse[0]
. Chose la plus facile est de simplement regarder la réponse dans votre navigateur ou via curl et voir à quoi il ressemble.OriginalL'auteur daaku
juste pour clarifier, pour tous les gens qui sont nouveaux à FB.api (que je suis) graphique de requêtes différents retour en forme de données ... en voici deux exemples:
FB.api('me/' function(returnData) { } )
mettrais les données suivantes dans la returnDatapuis si je l'ai dit returnData.prenom je voudrais obtenir "Hugh"
Si toutefois ma question est à propos de mes amis, je pourrais exécuter la requête suivante
FB.api('me/friends/' function(returnData) { } )
Et la forme de mes données est maintenant différente:
... donc returnData est maintenant un tableau ... afin de récupérer des valeurs, je voudrais faire quelque chose comme ce qui suit.
returnData.data[0].name
ce serait de retour "Tom Bell"J'espère que cette aide, car j'ai passé quelques heures à se demander où j'étais allé de mal ... il s'avère, il est dans la forme des données !!!! bonne chance mes amis.
Hugh
OriginalL'auteur Hugh Abbott
En général, la JS SDK ne retourne pas d'objet JSON mais elle renvoie un objet qui est structuré de manière similaire à l'Objet JSON.
Dire par exemple : l'Un est d'interrogation pour les événements de l'utilisateur des données et selon le GRAPHIQUE de référence de l'API (http://developers.facebook.com/docs/reference/api/event), les données renvoyées va avoir les attributs donnés http://developers.facebook.com/docs/reference/api/event.
L'objet JSON pour les données des événements serait comme ceci si vous utilisez le SDK PHP
Array ( [data] => Array ( [0] => Array ( [nom] => exemple de cas [start_time] => 2010-08-09T22:00:00+0000 [end_time] => 2010-08-10T01:00:00+0000 [location] => à l'office\ [id] => xxxxxxxx [rsvp_status] => assister )) [pagination] => Array ( [précédente] => lien hypertexte [suivant] => lien hypertexte ) )
Mais si vous êtes en utilisant JS SDK, puis la réponse renvoyée sera comme ceci
réponse.data[0...n].les attributs de la table en particulier de laquelle vous accédez.
Ainsi, dans le cas de l'événement de la table, il sera comme ceci :
réponse.data[0...n].nom du ou de la réponse.data[0...n].id, la réponse.data[0...n].end_time, etc
OriginalL'auteur sashtinathan
Ne présente jamais compris. Personne n'a accepté quoi que ce soit.
Le code ci-dessus a
Name
et pasname
. Aussi, comme Elle l'a souligné ci-dessus, cela fonctionne:Juste mes deux cents. @CoffeeAddict, accepter des réponses à montrer un peu de gratitude... Semble comme quelqu'un avec vous rep serait apprécié. :o)
OriginalL'auteur trgraglia
Je n'ai pas regardé l'API, mais je doute FB serait de vous donner JSON chaînes codées dans un tableau. Avez-vous essayé d'accéder aux réponse.data[0].someproperty?
Donc
alert(response.data[0].name);
ne fait rien? Je ne vois pas l'exemple que vous avez lié au fait de faire tout le traitement par la main, qui sont gérées par l'API de la bibliothèque avant même qu'elle appelle la fonction de rappel.en fait c'est exactement la même chose que j'ai essayé..nom parce que chaque album a un nom de propriété. Mais laissez-moi essayer une fois de plus. Je vais poster mon analyse..il arrive après cette alerte dans mon exemple ci-dessus, mais parce que je suis pas défini, sans doute parce que je ne sais pas ce que je suis de retour ou comment utiliser cet objet, mon analyse ne parvient pas ainsi avec un indéfini.
ok mise à jour, voir la mise à jour du fil ci-dessus.
Je pense que vous auriez à faire une boucle par la réponse, puis faire un alert(la réponse.data[0].nom)..parce que vous êtes l'obtention de plusieurs albums dans un objet JSON "je pense" si j'ai la bonne terminologie.
OriginalL'auteur Matti Virkkunen
Si il n'y a pas d'erreur, puis de réponse.les données devraient être les choses que vous voulez (ce sera un tableau dans la plupart des cas) si vous êtes en utilisant la nouvelle api graphique. Vous pouvez toujours juste d'alerte de la chaîne JSON si vous ne savez pas ce que vous obtenez en retour.
OriginalL'auteur jhchen
Je suis sûr que ce ne doit pas être plus un problème compte tenu de la L'API graphique de l'explorateur affiche clairement les données dans la forme qu'il est retourné. Vous avez raison à propos de la différence dans la structure des réponses, mais personnellement, il a été utile de voir ce que les données sont renvoyées à l'aide de l'explorateur et l'utilisation de la syntaxe en conséquence.
OriginalL'auteur sahithya