2010-06-28 1 views
14

Я пытаюсь получить изображение профиля facebook пользователя на основе их адреса электронной почты. Фактически, я хочу предложить своим пользователям возможность использовать Gravatar для своего имиджа или Facebook. Однако, единственный способ, которым я знаю, чтобы получить пользователь facebook изображения осуществляется через:Получение изображения профиля facebook с адреса электронной почты

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

Поскольку имена пользователей могут варьироваться в зависимости от Facebook и моего сайта, я хотел бы сделать это по адресу электронной почты, а не имени пользователя. Как я могу запросить чей-то профиль профиля facebook через адрес электронной почты?

+0

Можете ли вы сделать это? Кажется, что проблема с безопасностью позволяет извлекать данные из facebook на основе адреса электронной почты, который, вероятно, является частным пользовательским данным. Конечно, определение частного лица в facebook может быть более слабым, чем другие. –

+0

Я ищу то же самое. Я думал об использовании user.name в URL-адресе, но это работает только в том случае, если пользователь установил имя пользователя facebook на www.facebook.com/username. – Jorre

+0

Кажется, что почтовый клиент Sparrow (http://sparrowapp.com/) делает это, но он требует от вас аутентификации против facebook. –

ответ

-2

То, что вы просите, является частью того, почему существует Facebook Connect.

Использование их не слишком умно с именем XFBML вы можете запросить изображение непосредственно: <fb:profile-pic uid="1256100362" facebook-logo="true" size="thumb"> </fb:profile-pic>

Но вы должны реализовать логины с FB Connect первый ...

+1

это все еще использует UID, хотя - вы уже можете это сделать без Facebook Connect через, в случае, о котором вы упомянули, http://graph.facebook.com/1256100362/picture?type=large – Mala

+3

yup, стыдно, что мы можем Не делайте этого с md5 (электронной почтой), как и gravatar. – Jorre

4

Там, кажется, не быть официальным способом делать то, что вы просите. Похоже, что facebook сделал это закрытым по назначению, возможно, что-то связанное с конфиденциальностью. Ее на самом деле очень легко сделать это в несколько экранных выскабливание шагов, хотя:

1) Посещение http://www.facebook.com/#!/search.php?q=# {USERS_EMAIL_ADDRESS} & типа = все & INIT = SRP

2) Если страница возвращает «не найдено для вашего query. ", то у них нет профиля.

3) В противном случае страница будет содержать миниатюру пользователя для этого адреса электронной почты. (что-то вроде http://profile.ak.fbcdn.net/hprofile-ak-snc4/hs227.ash2/48219_72120057_3223_q.jpg)

Я мог бы написать приложение sinatra, чтобы сделать это примерно через 5 минут, если кто-нибудь захочет меня.

Но я думаю, что gravatar и facebook должны просто быть друзьями.

+1

Мне действительно нравится: я бы не скрипировал, но я могу определенно использовать результаты поиска, чтобы автоматически получать идентификаторы facebook-пользователей и использовать метод в мой вопрос.Тем не менее, поиск только, кажется, работает, когда вы вошли в систему, что поражает меня, делая это программно – Mala

20

Я вижу этот вопрос имеет несколько лет уже, но тот же поиск подход может быть использован с помощью API Graph:

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

Вы можете попробовать это на Graph API Explorer. Вы не получаете изображение профиля напрямую, но получаете идентификатор пользователя, который вы можете легко использовать для получения общего профиля.

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

+0

Потрясающий ответ! Это должно быть принято. –

+0

Точно - отличный ответ. :) То, что многие пропустят, заключается в том, что при использовании Graph API таким образом вы ограничены получением профиля * public * profile. Если настройки пользователя таковы, что их изображение профиля является частным, вы не сможете его получить (что, я думаю, большинство из нас согласится, так оно и должно быть). – LloydDobbler

+10

говорится: «Для запроса этого ресурса требуется токен доступа пользователя» – Adeem