Как получить имя пользователя в версии 2.0 или более поздней версии Facebook Graph API

Раньше я довольно легко получал имя пользователя в API 1.0, используя /me и получая свойство username объекта ответа.

Теперь я получаю эту ошибку с API 2.0:

(#12) имя пользователя устарело для версий v2.0 и выше

Единственный способ, которым я нашел это до сих пор, - это использовать FQL, но теперь он кажется устаревшим.

Есть ли способ обойти это?


person joaopribs    schedule 04.05.2014    source источник
comment
возможный дубликат Получить имя пользователя в Facebook Graph API 2.0   -  person powtac    schedule 07.01.2015


Ответы (3)


Я не хочу быть бесполезным, но, насколько я могу судить, доступ к имени пользователя был удален из API. Места, где приложение могло использовать имя пользователя, например в старых диалоговых окнах общего доступа, больше не могут делать это при использовании с API 2.0. Я думаю, что это также способ предотвратить доступ приложений к используемым уникальным идентификаторам за пределами области приложения - любые идентификаторы пользователей, которые вы получаете в API 2.0, относятся только к вашему приложению.

person giff    schedule 07.05.2014
comment
Это моя проблема. Я хочу идентифицировать пользователей в моей собственной базе данных, которые еще не используют мое приложение. Например, у меня есть куча записей в таблице людей, каждая из которых имеет имя пользователя Facebook. Таким образом, когда они входят в мое приложение, я проверяю, есть ли человек с этим конкретным именем пользователя, и вхожу в него. Как видите, я не могу использовать app_scopped_id, потому что эти пользователи, возможно, никогда не использовали мое приложение (но они имеют доступ, когда они это делают). До API 2.0 я использовал глобальный идентификатор пользователя, который также больше не является вариантом. В любом случае, спасибо за ваш комментарий. - person joaopribs; 08.05.2014
comment
Последний FB API получил класс с именем Profile, который может получить все, что вам нужно. - person Tushar Gogna; 28.05.2015
comment
Атрибуты user_id и name класса FBSDKProfile в API 4.0 — это не то, что раньше называлось именем пользователя. имя — это просто полное имя человека, объединяющее имя и фамилию и т. д. user_id — это идентификатор области приложения, а не универсальный идентификатор. Решение отказаться от универсального идентификатора и доступа к имени пользователя приложениями было выбором конфиденциальности — маловероятно, что у нас когда-либо будет к ним доступ. Лучшей идеей является Business Mapping API, подробно описанный ниже. - person giff; 22.07.2015
comment
Это кажется таким невероятно отсталым. email по-прежнему доступен через разрешение, и доступ к нему является гораздо более разрушительным/инвазивным, чем общедоступное имя пользователя/идентификатор. Казалось бы, по крайней мере, эти свойства будут доступны с настройкой разрешения. - person Mike-E; 26.07.2021

Я нашел простой обходной путь, который включает в себя запрос на получение в Facebook. Вместо имени пользователя Facebook предоставит вам идентификатор, уникальный для вашего приложения.

Я обнаружил, что запрос на https://www.facebook.com/[profile_id] затем перенаправляет на реальный профиль пользователя. Имя пользователя можно извлечь из URL-адреса перенаправления.

Пример:

> curl -i https://www.facebook.com/710290539
HTTP/1.1 301 Moved Permanently
Location: https://www.facebook.com/colinskow

(Примечание: поскольку я являюсь владельцем приложения в тестовом режиме, это может быть исключением. Пожалуйста, дайте мне знать в комментариях, если вы можете подтвердить это в производственной среде.)

person Colin Skow    schedule 20.03.2015
comment
Похоже, Facebook уже изменил этот ответ. Теперь он будет перенаправлен для входа в систему, прежде чем вы получите доступ к этому URL-адресу. - person chhantyal; 08.04.2015
comment
@chhantyal Я не вижу никаких изменений в этом ответе, он по-прежнему перенаправляется на имя пользователя. Вы получаете другой ответ? - person Noam; 13.04.2015
comment
Меня также перенаправляют на страницу входа. @Noam, ты пытался получить доступ к этой странице, не входя в систему? - person ricardokrieg; 14.07.2015
comment
@ricardokrieg Я сделал. Это сработало, но только на время. - person Noam; 14.07.2015
comment
вам нужно войти в систему, и тогда она будет работать, но как мне сначала войти в систему? - person Rony Tesler; 27.07.2015
comment
Он все еще работает для меня, используя командную строку CURL без входа в систему. Это означает, что он должен работать с использованием любого API HTTP-запросов. - person Colin Skow; 11.08.2015
comment
У меня это работало для старых идентификаторов и требует входа в систему для новых идентификаторов. - person gorodezkiy; 18.02.2016

В качестве обходного пути вы можете использовать адрес электронной почты в качестве уникального идентификатора. Адрес электронной почты можно получить, используя «email» в качестве области разрешений.

Facebook удалил поле имени пользователя из новой версии API. Невозможно получить имя пользователя. Но Facebook предоставляет уникальный идентификатор приложения. Если вам нужно использовать одного и того же пользователя в нескольких приложениях, вы можете использовать недавно представленный API Business Mapping. Это позволяет добавить все необходимые приложения в группу. В этом случае идентификатор будет уникальным среди всех приложений в группе.

Более подробная информация об API Business Mapping доступна по адресу https://developers.facebook.com/docs/apps/for-business 1

person Prasad    schedule 16.06.2014
comment
Моя проблема в том, что мне нужно что-то для идентификации пользователей, которые даже не начали использовать мою систему. Например, системный администратор вводит что-то, что идентифицирует пользователя в facebook, и, когда пользователь пытается войти в мою систему, ему будет предоставлен доступ, если это что-то совпадает с записью в моей базе данных. Использование электронной почты действительно ДОЛЖНО работать, но знаете ли вы, как получить электронную почту любого пользователя, если он еще не использует мою систему, которую может ввести системный администратор? Раньше я использовал имя пользователя, потому что оно уже есть в URL-адресе профиля пользователя, и это было так просто. - person joaopribs; 22.06.2014
comment
Использование электронной почты ненадежно. Кажется, что если пользователь скроет свою электронную почту Facebook из своей временной шкалы, как это сделал я, Facebook не вернет ее. - person Matt; 23.06.2014
comment
Вы уверены, что идентификаторы пользователей в области приложения одинаковы во всех приложениях, которые были добавлены в бизнес-менеджер FB ?? когда я вызываю это /me/ids_for_business с помощью графического API, я вижу, что идентификатор пользователя отличается для каждого приложения. ответьте, пожалуйста. - person dev-m; 03.09.2014
comment
Не у всех пользователей фейсбука есть электронная почта, многие из них зарегистрированы по телефону - person gorodezkiy; 18.02.2016
comment
Поздний комментарий, но все же... что я делаю, так это: 1) я создаю «одноразовый токен доступа» для идентификатора пользователя 2) я отправляю этот токен пользователю по электронной почте , как URL 3) Пользователь нажимает на него, открывает страницу. Пользователь уже вошел в приложение. 4) Я прошу пользователя запустить аутентификацию Facebook, и когда вызывается обратный вызов, я назначаю этот идентификатор facebook (в масштабе всего приложения) этому конкретному пользователю. Обратите внимание, что в (4) я проверю, занят ли уже идентификатор пользователя. У меня есть рабочий код узла для этого, используя паспорт узла, если вам интересно - person Merc; 28.08.2016