Идентификатор пользователя Facebook на вкладке страницы iframe без разрешений

У меня большой опыт разработки на Facebook, но это заставило меня дернуть за волосы. Это должно быть что-то очень маленькое, но я не могу этого понять. Недавно я видел несколько страниц Facebook с вкладками приветствия, на которых отображается имя пользователя «Добро пожаловать [ВАШЕ ИМЯ]», который посещает их страницу. Пример здесь:

https://www.facebook.com/Tony.Samaha.Official.Page

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

К вашему сведению: я использую вкладку iframe.


person Sumeet Kashyap    schedule 07.02.2012    source источник


Ответы (2)


Пользователь по-прежнему использует старое статическое приложение FBML, поэтому, скорее всего, они используют fb:name ярлык. Хотя я считаю, что теперь это устарело. Итак, действительно, страницу, на которую вы ссылаетесь, нужно обновить.

person TommyBs    schedule 07.02.2012
comment
Хммм, я думаю, вы правы. fb: name еще некоторое время можно использовать. Значит, нет возможности получить идентификатор пользователя без разрешений? - person Sumeet Kashyap; 07.02.2012

Ознакомьтесь с документацией по signed_requests. Когда пользователь посещает ваше приложение, на ваш URL будет отправлено signed_request. В документации указано:

  • Sign_request передается приложениям на Facebook.com, когда они загружаются в среду Facebook.
  • Sign_request передается любому приложению, которое зарегистрировало деавторизованный обратный вызов в приложении разработчика, когда данный пользователь удаляет приложение с помощью панели инструментов приложения.
  • Sign_request передается приложениям, которые используют подключаемый модуль Registration, всякий раз, когда пользователь успешно регистрируется в своем приложении.

Вам нужно будет декодировать этот запрос (подробности см. По ссылке выше), и оттуда вы сможете извлечь user_id посетившего пользователя. Затем все, что вам нужно сделать, это запросить Graph API следующим образом:
https://graph.facebook.com/USER_ID и вы получите обратно общедоступную информацию для этого пользователя, которая должна включать имя пользователя.

person Lix    schedule 08.02.2012
comment
Вы правы, но вам нужны разрешения, прежде чем вы сможете получить часть идентификатора пользователя подписанного запроса. - person Sumeet Kashyap; 15.02.2012
comment
Если вы говорите о приложении с вкладкой страницы - все, что нужно сделать пользователю, это как страница, и у вас будет доступ к его идентификатору пользователя. - person Lix; 15.02.2012
comment
Вы получаете подписанный запрос? Вы можете это разобрать? - person Lix; 24.02.2012
comment
Да, конечно, я администратор фан-страницы и могу разбирать signed_request. Это мой подписанный запрос: ### SIGNED REQUEST ### Array ( [algorithm] => HMAC-SHA256 [issued_at] => 1330112620 [page] => Array ( [id] => 304887859549216 [liked] => 1 [admin] => 1 ) [user] => Array ( [country] => us [locale] => en_US [age] => Array ( [min] => 21 ) ) ) - person 350D; 25.02.2012
comment
Тестовое приложение: goo.gl/1bNco Отладочная информация доступна администраторам при нажатии символа © в нижнем колонтитуле. - person 350D; 25.02.2012
comment
почему бы вам не обновить свое сообщение соответствующим кодом, который вы используете для получения и анализа подписанного запроса. - person Lix; 25.02.2012
comment
Конечно, вот оно: require_once "../api/facebook.php"; $facebook = new Facebook(array( 'appId' => APP_ID, 'secret' => SECRET, 'cookie' => true )); $signedrequest = $facebook->getSignedRequest(); - person 350D; 25.02.2012