2010-06-28 4 views
14

Ich versuche, das Facebook-Profilbild eines Nutzers basierend auf seiner E-Mail-Adresse zu erhalten. Effektiv möchte ich meinen Benutzern die Wahl zwischen der Verwendung von Gravatar für ihr Bild oder Facebook anbieten. Allerdings ist der einzige Weg, den ich kenne, ein Benutzerfacebook Bild zu erhalten über:Ein Facebook-Profilbild von einer E-Mail-Adresse erhalten

http://graph.facebook.com/[FBOOK USERNAME]/picture?type=large

Da die Benutzernamen zwischen Facebook und meine Seite variieren kann, würde Ich mag diese Adresse per E-Mail tun, anstatt Benutzernamen ein. Wie kann ich das Facebook-Profilbild von jemandem per E-Mail-Adresse abfragen?

+0

Können Sie wirklich das tun? Es scheint ein bisschen ein Sicherheitsproblem zu sein, um den Abruf von Facebook-Daten basierend auf einer E-Mail-Adresse zu ermöglichen, die wahrscheinlich private Benutzerdaten sind. Natürlich kann die Definition von "privat" bei Facebook lockerer sein als bei anderen. –

+0

Ich suche das Gleiche. Ich dachte über die Verwendung der user.name in der URL, aber das funktioniert nur, wenn ein Benutzer einen Facebook-Benutzernamen auf www.facebook.com/username eingerichtet hat. – Jorre

+0

Es scheint, der E-Mail-Client von Sparrow (http://sparrowapp.com/) tut dies, aber es erfordert, dass Sie sich gegen Facebook authentifizieren. –

Antwort

-2

Was Sie fordern, ist Teil des Grundes, warum Facebook Connect existiert.

Mit ihren nicht allzu geschickt genannten XFBML können Sie das Bild anfordern direkt: <fb:profile-pic uid="1256100362" facebook-logo="true" size="thumb"> </fb:profile-pic>

Aber Sie haben Logins mit FB Connect zuerst zu implementieren ...

+1

dies verwendet immer noch die UID - Sie können das schon ohne Facebook Connect tun, wenn Sie erwähnt haben, http://graph.facebook.com/1256100362/picture?type=large – Mala

+3

yup, es ist eine Schande, dass wir können Das tue ich mit einem md5 (E-Mail) genau wie Gravatar tut – Jorre

4

Es scheint nicht zu sei ein offizieller Weg, um das zu tun, was du verlangst. Es sieht so aus, als ob facebook dies absichtlich geschlossen hat, wahrscheinlich etwas mit Privatsphäre zu tun hat. Es ist eigentlich einfach, obwohl dies in ein paar Screen-Scraping Schritte zu tun:

1) Besuch http://www.facebook.com/#!/search.php?q=# {USERS_EMAIL_ADDRESS} & type = alle & init = srp

2) Wenn Seite gibt „Keine Ergebnisse für Ihre gefunden query. ", dann haben sie kein Profil.

3) Andernfalls enthält die Seite eine Miniaturansicht des Benutzers für diese E-Mail-Adresse. (etwas wie http://profile.ak.fbcdn.net/hprofile-ak-snc4/hs227.ash2/48219_72120057_3223_q.jpg)

Ich könnte eine Sinatra-App schreiben, um dies in etwa 5 Minuten zu tun, wenn jemand mich möchte.

Aber ich denke, Gravatar und Facebook sollten nur Freunde sein.

+1

Ich mag das wirklich - ich würde nicht screenen, aber ich kann definitiv die Suchergebnisse verwenden, um die Facebook-IDs der Benutzer automatisch zu erhalten und die Methode zu verwenden meine Frage.Die Suche funktioniert jedoch nur, wenn Sie eingeloggt sind, was mich bei der programmatischen Ausführung dieser Aufgabe stört – Mala

20

Ich sehe diese Frage ein paar Jahren hat bereits aber die gleiche Suchansatz kann mit dem Graph API genommen werden:

GET https://graph.facebook.com/search?q={EMAIL}&type=user

Sie dies auf der Graph API Explorer versuchen. Sie erhalten das Profilbild nicht direkt, aber Sie erhalten die Benutzer-ID, die Sie leicht verwenden können, um das öffentliche Profilbild zu erhalten.

https://graph.facebook.com/{UID}/picture

+0

Schreckliche Antwort! Dies sollte der akzeptierte sein. –

+0

Genau - ausgezeichnete Antwort. :) Was viele Leute vermissen ist, dass Sie, wenn Sie die Graph API auf diese Weise verwenden, nur das * public * Profilbild bekommen. Wenn die Einstellungen eines Benutzers so aussehen, dass sein Profilbild privat ist, können Sie es nicht abrufen (was meiner Meinung nach den meisten von uns zustimmen würde, ist, wie es sein sollte). – LloydDobbler

+10

es heißt "Ein Benutzerzugriffstoken ist erforderlich, um diese Ressource anzufordern" – Adeem