32 votes

Trouver un utilisateur de Facebook (url de la page de profil) à partir d'une adresse électronique connue

J'ai une adresse électronique et je veux savoir si un utilisateur de Facebook est lié à cette adresse. Si c'est le cas, je veux récupérer l'url de la page de profil de cet utilisateur et la sauvegarder quelque part. Je fais no Je n'ai pas d'application facebook, mais, si nécessaire, j'utiliserais les données du compte existant pour me connecter à facebook et effectuer la tâche.

Je pensais que ce serait une tâche facile, mais ce n'est pas le cas. J'ai lu les API graphique et vous y trouverez des instructions sur la manière de rechercher des données publiques. Il est indiqué que le format est le suivant :
https://graph.facebook.com/search?q=QUERY&type=OBJECT_TYPE

Mais en essayant de le faire avec une adresse électronique dans le champ q param et utilisateur dans le type param sans autre information aboutit à une Exception OAuth dire "Un jeton d'accès est nécessaire pour demander cette ressource." Cependant, si vous cliquez sur les liens de recherche de l'exemple, Facebook génère une url avec le jeton d'accès mentionné lié à l'utilisateur actuellement connecté. Les recherches effectuées avec ce jeton donnent les résultats escomptés. Mais je n'arrive pas à comprendre comment obtenir ce jeton d'accès à la session de l'utilisateur après la connexion. Chaque fois que je cherche comment obtenir un jeton d'accès, je ne trouve que des informations concernant les applications Facebook et la récupération des autorisations pour l'accès aux données de base ou spécifiques. Comme je l'ai dit, ce n'est pas ce que je recherche, car je n'ai pas d'application Facebook et je n'en ai pas besoin.

Puisque Facebook me donne le jeton nécessaire dans les liens de l'exemple, j'ai pensé qu'il ne devrait pas y avoir de problème pour l'obtenir aussi. Ou est-ce qu'ils l'ont seulement parce qu'ils ont l'avantage du terrain ? Par ailleurs, le Outlook Social Connector Provider pour Facebook est en mesure de récupérer les données de Facebook à partir d'une simple adresse électronique (et des données de compte fournies). Je me suis donc dit que si Microsoft pouvait faire ce genre de choses, il devait être possible de faire des choses similaires.

Enfin, c'est d'autant plus frustrant que, théoriquement et pratiquement, je suis déjà capable de trouver l'url du profil d'un utilisateur en recherchant simplement son adresse e-mail. Je n'ai même pas besoin d'être connecté à Facebook. Et ce n'est pas la méthode officielle de l'API.
Si j'effectue une requête web à http://www.facebook.com/search.php?init=s:email&q=example@domain.com&type=users J'obtiens le résultat de recherche attendu. Le problème est que je dois analyser le code HTML et extraire l'url (ce qui n'est pas grave) et que la page de résultat est susceptible de changer et pourrait facilement casser ma méthode d'extraction de l'url (ce qui est problématique).

Quelqu'un a-t-il une idée de la meilleure façon d'accomplir cette tâche ?

16voto

Dave Sag Points 2652

La réponse définitive à cette question est donnée par Facebook lui-même. Dans un billet publié aujourd'hui à l'adresse https://developers.facebook.com/bugs/335452696581712 un développeur de Facebook dit

The ability to pass in an e-mail address into the "user" search type was
removed on July 10, 2013. This search type only returns results that match
a user's name (including alternate name).

Hélas, la réponse est simple : vous ne pouvez plus rechercher des utilisateurs à partir de leur adresse électronique. C'est dommage, mais ce sont les nouvelles règles de Facebook.

7voto

bkaid Points 29335

Il suffit d'utiliser l'API graphique avec ce format d'url : https://graph.facebook.com/search?q=zuck@fb.com&type=user&access_token= ... Vous pouvez facilement créer une application aquí et obtenir un jeton d'accès aquí . I croire vous obtenez une estimation de 600 requêtes par 600 secondes, bien que cela ne soit pas documenté.

Si vous le faites en masse, vous pouvez utiliser demandes par lots par lots de 20 adresses électroniques. Cela peut aider à respecter les limites de débit (je ne sais pas si vous recevez 600 demandes par lot toutes les 600 secondes ou 600 demandes individuelles).

7voto

Dan Fabulich Points 6143

En réponse au bug déposé ici : http://developers.facebook.com/bugs/167188686695750 a répondu un ingénieur de Facebook :

La recherche d'utilisateurs est conçue pour être une fonction d'utilisateur à utilisateur uniquement, qui permet de trouver de nouveaux amis ou de rechercher des contacts existants sur Facebook à partir de l'adresse électronique. Le "scraping" mentionné sur StackOverflow est spécifiquement contraire à nos conditions d'utilisation. https://www.facebook.com/terms.php et en fait, la seule façon légitime de rechercher des utilisateurs sur Facebook est d'être un utilisateur.

6voto

oneNiceFriend Points 2435

C'est peut-être un peu tard, mais j'ai trouvé un site web qui donne les détails des comptes de médias sociaux par adresse e-mail connue. Il s'agit de https://www.fullcontact.com

Vous pouvez y utiliser l'Api de la personne et obtenir les informations.

Il s'agit d'un type d'obtention : https://api.fullcontact.com/v2/person.xml?email=someone@ ****&apiKey=********

Il est également possible de choisir entre xml et json.

3voto

Jan Zahradník Points 116

J'ai capturé la communication du plugin Outlook pour Facebook et voici la requête POST

https://api.facebook.com/method/fql.multiquery
access_token=TOKEN&queries={"USER0":"select '0', uid, name, birthday_date, profile_url, pic, website from user where uid in (select uid from email where email in ('EMAIL_HASH'))","PENDING_OUT":"select uid_to from friend_request where uid_from = MY_ID and (uid_to IN (select uid from #USER0))"}


TOKEN - jeton d'accès valide
EMAIL_HASH - combinaison des hachages CRC32 et MD5 de l'adresse électronique recherchée au format crc32_md5
MY_ID - ID du profil Facebook du propriétaire du jeton d'accès

Mais lorsque j'exécute cette requête avec un jeton d'accès différent (généré pour ma propre application), la réponse du serveur est la suivante : "La table que vous avez demandée n'existe pas" : "Je n'ai pas non plus trouvé l'email de la table dans la documentation de l'API Facebook. Microsoft a-t-il des droits supplémentaires sur Facebook ?

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