Facebook Graph API v2.0+ - /moi/les amis renvoie vide, ou seulement des amis qui utilisent aussi ma demande
J'essaie d'obtenir mon ami nom et l'id avec des Graph API v2.0, mais les données de retours à vide:
{
"data": [
]
}
Quand j'ai été en utilisant v1.0, tout était OK avec la requête suivante:
FBRequest* friendsRequest = [FBRequest requestForMyFriends];
[friendsRequest startWithCompletionHandler: ^(FBRequestConnection *connection,
NSDictionary* result,
NSError *error) {
NSArray* friends = [result objectForKey:@"data"];
NSLog(@"Found: %i friends", friends.count);
for (NSDictionary<FBGraphUser>* friend in friends) {
NSLog(@"I have a friend named %@ with id %@", friend.name, friend.id);
}
}];
Mais maintenant je ne peux pas avoir d'amis!
- un possible de surmonter ce problème stackoverflow.com/a/25584013/2529087
Vous devez vous connecter pour publier un commentaire.
Dans la v2.0 de l'API Graphique, appelant
/me/friends
renvoie la personne à des amis qui ont aussi l'utilisation de l'application.En outre, dans la v2.0, vous devez demander la
user_friends
la permission de chaque utilisateur.user_friends
n'est plus inclus par défaut dans chaque connexion. Chaque utilisateur doit accorder lauser_friends
permission afin d'apparaître dans la réponse à/me/friends
. Voir le Facebook guide de mise à niveau pour des renseignements plus détaillés, consultez le résumé ci-dessous.Si vous souhaitez accéder à une liste de non-application-à l'aide d'amis, il y a deux options:
Si vous voulez laissez vos gens à étiqueter leurs amis dans les histoires qu'ils publient à Facebook à l'aide de votre Application, vous pouvez utiliser le
/me/taggable_friends
API. L'utilisation de ce paramètre nécessite un examen par Facebook et doit être utilisé uniquement pour le cas où vous êtes rendu à une liste d'amis afin de permettre à l'utilisateur de marquer dans un post.Si votre Application est un Jeu ET votre Jeu prend en charge Facebook Toile, vous pouvez utiliser le
/me/invitable_friends
point de terminaison afin de rendre une invitation personnalisée de dialogue, puis passer les jetons retourné par cette API pour la norme Demande de Dialogue.Dans d'autres cas, les applications ne sont plus en mesure de récupérer la liste complète des amis d'un utilisateur (uniquement ceux des amis qui ont expressément autorisé de votre application à l'aide de la
user_friends
autorisation). Ceci a été confirmé par Facebook comme "by design".Pour les applications qui veulent permettre à des personnes à inviter des amis à utiliser l'application, vous pouvez toujours utiliser le Envoyer Dialogue sur le Web ou la nouvelle Boîte de Dialogue de Message sur iOS et Android.
Mise à JOUR: Facebook ont publié une foire aux questions sur ces changements ici: https://developers.facebook.com/docs/apps/faq qui expliquent toutes les options disponibles pour les développeurs afin d'inviter des amis etc.
taggable_friends
dans les points pour l'examen de la soumission.taggable_friends
maintenant ne retourne rien. Aussi, de connexion de l'examen est requis avant de pouvoir être accordéeuser_friends
autorisation.Bien que Simon de la Croix - réponse est acceptée et correct, je pensais que je le boeuf un peu avec un exemple (android) de ce qui doit être fait. Je vais le garder comme général comme je peux et de se concentrer sur la question. Personnellement, je me suis retrouvé entreposer des objets dans une base de données de sorte que le chargement était lisse, mais qui nécessite un CursorAdapter et ContentProvider qui est un peu hors de portée ici.
Je suis venu ici moi-même pensé, maintenant ce qui?!
La Question
Comme user3594351, j'ai remarqué de l'ami de données est vide. J'ai trouvé ceci en utilisant le FriendPickerFragment. Ce qui a fonctionné il y a trois mois, ne fonctionne plus. Même facebook les exemples de cassé. Donc ma question était de savoir " Comment puis-je créer FriendPickerFragment à la main?
Ce Qui N'A Pas De Travail
Option #1 de l' Simon Croix n'était pas assez fort pour inviter des amis à l'application. Simon Croix a également recommandé à la Demande de Dialogue, mais qui ne permettent seulement 5 demandes à la fois. Les demandes de dialogue a également montré les mêmes amis pendant tout Facebook enregistré dans la session. Pas utile.
Ce Qui A Fonctionné (Résumé)
Option #2 avec un peu de travail acharné. Vous devez assurez-vous de remplir Facebook de nouvelles règles: 1.) Vous êtes un jeu 2.) Vous avez une Toile d'application (Présence sur le Web) 3.) Vous êtes à l'application est enregistrée avec Facebook. Tout est fait sur Facebook développeur de site web, sous paramètres.
Pour émuler l'ami sélecteur à la main à l'intérieur de mon application, j'ai fait la suivante:
Détails
La AsynchTask
La FacebookFriend classe que j'ai créée
Facebook a révisé ses politiques. Vous ne pouvez pas obtenir la totalité de la liste d'amis de toute façon, si votre Application ne dispose pas d'un Canevas de mise en œuvre et si votre Application n'est pas un jeu. Bien sûr, theres également taggable_friends, mais que l'on est pour l'étiquetage seulement.
Vous serez en mesure de tirer la liste d'amis qui ont autorisé l'application seulement.
Les applications utilisant l'API Graphique 1.0 sera de travail jusqu'au 30 avril 2015, et après qu'il sera obsolète.
Voir le lien ci-dessous pour obtenir plus de détails sur cette
https://developers.facebook.com/docs/graph-api/reference/v2.2/user/friends
https://developers.facebook.com/docs/apps/faq#invite_to_app
Espère que cette aide
Essayer /me/taggable_friends?limite=5000 à l'aide de votre code javascript
OU
essayer de l'API graphique
https://graph.facebook.com/v2.3/user_id_here/taggable_friends?access_token=
Avoir du plaisir
Que Simon mentionné, ce n'est pas possible dans les nouveaux facebook API. Pur techniquement parlant vous pouvez le faire via le navigateur et l'automatisation.
Exemple de mise en œuvre à l'aide de WatiN
Prototype avec la mise en œuvre de cette approche (à l'aide de C#/Watin) voir https://github.com/svejdo1/ShadowApi
Il permet également la mise à jour dynamique de facebook connecteur qui est en train de récupérer la liste de vos contacts.
Dans Swift Xcode 4.2 et 10.1
Si vous souhaitez obtenir la liste d'amis de FB, vous devez soumettre votre application en vue de l'examen en FB. Voir quelques-uns des Autorisations de Connexion.
https://developers.facebook.com/docs/apps/review/login-permissions
Ici deux étapes
1) d'Abord, votre de l'application doit être en Live
2) Obtenir autorisations requises forme FB.
1) Permettre à notre application live :
https://developers.facebook.com/apps/
Sur l'étape terminée.
2) la présentation de notre application pour examen :
Ex: user_friends, user_videos, user_posts etc.
Ex: user_events
Comme ça soumettre pour toutes les demandes (user_friends , user_events, user_videos, user_posts etc).
Enfin soumission de votre application pour examen.
Si votre examen de la forme acceptée FB, maintenant, votre vous êtes admissible à lire des contacts et etc.
user_friends
permission est très limitée. De Facebook de la documentation (avril 2019): [Ce que] accorde une application l'autorisation pour accéder à une liste d'amis qui utilisent également dit app. Cette autorisation est limitée à un nombre limité de partenaires et à l'utilisation requiert l'approbation préalable par Facebook. Pour une personne de le montrer dans une autre liste d'amis, les deux personnes doivent avoir partagé leur liste d'amis avec l'application et ne pas désactivé cette autorisation lors de la connexion.dans FBSDKGraphAPI v2.0 ou au-dessus, vous devez demander la user_friends la permission de chaque utilisateur dans le temps de FB login.depuis user_friends n'est plus inclus par défaut dans chaque connexion, nous avons à ajouter. Chaque utilisateur doit accorder la user_friends autorisation pour figurer dans la réponse à l' /me/amis
Au moment de l'FB login, il invite l'écran, qui contiendra toutes les autorisations
Si l'utilisateur presse le bouton continuer, les autorisations définies. Lorsque vous accédez à la liste de vos amis à l'aide de FBGraphAPI, vos amis qui a ouvert une session dans l'application comme ci-dessus seront répertoriés
La sortie contient les utilisateurs qui ont accordé user_friends autorisation au moment de vous connecter à votre application via Facebook