2010-07-29 4 views
4

У меня возникла проблема.Facebook получить идентификатор пользователя на вкладке страницы (signed_request)

У меня есть пользовательская вкладка страницы и текущий пользовательский просмотр. Я прошу пользователя предоставить расширенные разрешения для своего профиля (используя Facebook.showPermissionDialog). Если он предоставит разрешения, теоретически, у меня будет доступ к Graph API и другим материалам. Но когда я разбираю новый параметр signed_request из Facebook, я получаю oauth_token, привязанный к текущей вкладке страницы, а не к профилю пользователя. Другими словами, запрос метода Graph API «me» дает мне мой профиль страницы. И я хочу получить профиль пользователя! Как мне получить доступ к нему?

Как получить доступ к API-интерфейсу пользователя на вкладке Facebook?

ответ

2

Вкладка намного ограничена, чем обычное приложение. Он не знает, кто его посещает, если они не взаимодействуют с вкладкой. В основном это было сделано, чтобы подчеркнуть, что вкладка предназначена для использования пользователю, который его установил, а не посетителям. Из docs:

  • Он не знает, кто пользователь просматривает, когда пользователь в первый раз посещения вкладки. Facebook отправляет параметры fb_sig_user и fb_sig_profile_user, оба содержат идентификатор пользователя владельца профиля.
  • Если пользователь просмотра взаимодействует со вкладкой (например, отправляет форму, выполняет действие, которое вызывает загрузку нового содержимого AJAX, или следует относительный URL-адрес, который загружается на вкладке), этот UID пользователя отправляется в приложение как параметр fb_sig_user, идентификатор пользователя владельца профиля отправляется как параметр fb_sig_profile_user. Ключ сеанса просмотра пользователя ключа отправляется только в том случае, если пользователь разрешил приложение.
  • Приложения используют ключ сеанса владельца на вкладках приложения владельца.
+0

Часть точки параметра signed_request заключается в том, что она предназначена для решения этой проблемы. У меня та же проблема, что и вопросник, хотя похоже, что его решение может мне помочь. Документация signed_request действительно предполагает, что пользователю необходимо сначала взаимодействовать с приложением, но это не делает этого очень ясным - я полностью пропустил это, пока не перечитал его только сейчас. –

+0

Чтобы сообщать вам об этом, ваша ссылка не работает. Ссылка: http://meta.stackexchange.com/q/101241/149820 – staticbeast

3

Я выяснил, как это работает. После того как пользователь предоставит разрешения, Facebook отправит signed_request текущего пользователя (и его идентификатор), когда вы вызываете страницу на моем сервере через Ajax. Когда страница загружается статически, вы получаете sign_request вкладки страницы. Надеюсь, это поможет кому-то.

+0

как разобрать/декодировать полезную нагрузку обратно на объект json? – cdpnet

+0

Не могли бы вы объяснить подробнее? Возможно ли получить UID пользователя, просматривающего другую вкладку пользователя? – balepc

+0

@cdpnet, @balepc: есть документация о процессе signed_request, включая пример кода PHP, на сайте Facebook по адресу http://developers.facebook.com/docs/authentication/canvas; его относительно просто реализовать. Если у вас есть какие-то конкретные вопросы, вероятно, стоит начать новый вопрос. –

Смежные вопросы