Получить имя пользователя в Facebook Graph API 2.0
В "старом" API-интерфейсе Facebook был поле "имя пользователя", которое можно было бы использовать для создания удобочитаемого URL профиля. Например, мое имя пользователя - "sebastian.trug", что приводит к URL-адресу профиля Facebook http://www.facebook.com/sebastian.trug.
С Graph API 2.0 Facebook удалил поле "имя пользователя" из пользовательских данных, полученных из "/me".
Есть ли способ получить эти данные через API 2.0 или "имя пользователя" теперь рассматривается как устаревшее поле?
Ответы
Ответ 1
Facebook избавился от имени пользователя, потому что имя пользователя является одним из способов отправки электронной почты через Facebook.
Например, с учетом URL http://www.facebook.com/sebastian.trug
соответствующее электронное письмо Facebook будет [email protected]
который будет отправлен по электронной почте непосредственно в messages
(если для параметра message
установлено значение public
), в противном случае в папке other
.
Ответ 2
Поле username
объекта User было удалено и не существует в Graph API версии 2.0. В версии 2.0 API нет способа получить имя пользователя FB пользователя.
Источник: https://developers.facebook.com/docs/apps/changelog#v2_0_graph_api
"/me/имя пользователя больше не доступно."
Ответ 3
@Simon Cross - он устарел, документирован, да. Это не вопрос, вопрос в том, как его получить и, кроме того, интересно, почему Facebook сделал такой ужасный выбор и удалил имя пользователя. Сотни приложений, которые полагаются на имя пользователя для создания аккаунтов на их службе, будут нарушены.
@user3596238 - Вы можете придерживаться API V.1, который будет существовать до конца апреля 2015 года, на сегодняшний день далеко не лучшим решением, но в любом случае Facebook может быть неактуальным.
https://developers.facebook.com/docs/apps/changelog
Решение: попросите пользователя ввести имя пользователя, кроме фактического входа в Facebook? - По-моему, это делает логин Facebook абсолютно бессмысленным.
Ответ 4
Пока SDK 2.0 больше не будет предоставлять поле username
, его можно легко очистить, если у вас есть номер идентификатора пользователя (который вы, вероятно, будете использовать для доступа к графику в любом случае).
URL-адрес facebook.com/<user id>
будет перенаправлен на facebook.com/<username>
, который затем можно извлечь, как вам нравится.
Ответ 5
мой подход отменяет имя пользователя, используя nokogiri через профиль пользователя.
вроде как (в рубине):
html = RestClient.get("http://facebook.com/123123xxx)
doc = Nokogiri::HTML(html)
username = doc.css('head meta')[1].attributes["content"].value
Ответ 6
Одним из способов может быть доступ к facebook.com/{userid}, используя cURL, а затем выполните перенаправление.
Страница переименовывается в facebook.com/{username}
Ответ 7
Вдохновленный от @RifkiFauzi answer, вот мое решение в чистом Python
#get html of a page via pure python ref. https://stackoverflow.com/a/23565355/248616
import requests
r = requests.get('http://fb.com/%s' % FB_USER_ID) #open profile page of the facebook user
r.raise_for_status()
html = r.content
#search string with regex ref. https://stackoverflow.com/a/4667014/248616
import re
# m = re.search('meta http-equiv="refresh" content="0; URL=/([^?]+)\?', html)
m = re.search('a class="profileLink" href="([^"]+)"', html)
href = m.group(1) #will be https://www.facebook.com/$FB_USER_NAME on 201705.24
username = href.split('/')[-1]
print(href)
print(username)
Ответ 8
https://graph.facebook.com/?id=100005908663675
Просто измените id на любой.