Как передать строку запроса в URL-адрес приложения вкладки Facebook на основе пользователя, добавившего вкладку на свою страницу

У меня есть довольно простое приложение для вкладок страниц, которое можно добавить на чью-либо страницу FB. Я предоставляю кнопку на своем сайте, чтобы помочь пользователям добавить приложение на свою страницу FB.

Я хочу обновить URL-адрес вкладки страницы iframe (и безопасный URL-адрес), чтобы включить строку запроса. Это позволит настраивать содержимое iframe для каждого пользователя, добавляющего приложение на свою страницу.

Базовый вариант использования заключается в том, что пользователь 1 нажимает кнопку, и приложение добавляется на его страницу. Содержимое iframe относится к пользователю 1. Пользователь 2 делает то же самое, но содержимое его вкладки относится к пользователю 2. Я могу обработать строку запроса на своем сайте, чтобы он отвечал правильно, но я не уверен, как это сделать. попросите URL-адрес вкладки добавить параметр строки запроса из кнопки «Добавить приложение в Facebook».

текущее добавление приложения в код facebook, который я использую:

<div id='fb-root'></div>
<script src='http://connect.facebook.net/en_US/all.js'></script>
<p><a onclick='addToPage(); return false;'>Add to Page</a></p>
<p id='msg'></p>

<script> 
  FB.init({appId: "252314034891861", status: true, cookie: true});

   function addToPage() {

  // calling the API ...
  FB.ui(
    {
        method: 'pagetab'
    },
    function(response) {
        if (response != null && response.tabs_added != null) {

            $.each(response.tabs_added, function(pageid) {
                  alert(pageid);
            });
        }
    }
  );


  }

</script>

Спасибо за вашу помощь!

ОТРЕДАКТИРОВАНО, ЧТОБЫ ДОБАВИТЬ ДОПОЛНИТЕЛЬНУЮ ИНФОРМАЦИЮ

Поговорив об этом с другим разработчиком, я хотел убедиться, что я понятен. Если User1 добавляет вкладку на свою страницу, то независимо от того, кто просматривает вкладку, содержимое всегда будет контекстным для User1. Если Пользователь 2 добавит эту вкладку на свою страницу, то независимо от того, кто просматривает эту вкладку, содержимое будет контекстным для Пользователя 2. Содержимое вкладки зависит от пользователя, добавившего вкладку на свою страницу.


person TJ Sherrill    schedule 22.10.2012    source источник
comment
Почему бы просто не изменить содержимое на основе идентификатора страницы, а не идентификатора пользователя? идентификатор страницы передается с каждым запросом к вашему приложению, и приложение не может быть установлено на страницу более одного раза, поэтому это всегда будет уникальная комбинация приложение/страница.   -  person Igy    schedule 23.10.2012


Ответы (1)


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

Однако идентификатор страницы передается с каждым запросом к вашему приложению через свойство page элемента signed_request вместе с некоторыми другими параметрами, включая текущий идентификатор пользователя (если они авторизовали ваше приложение) и то, понравилась ли им страница или они являются администраторами страницы (независимо от их статуса авторизации).

Приложение нельзя установить на страницу более одного раза, поэтому идентификатор приложения/идентификатор страницы будет уникальным для ваших целей.

Единственный другой параметр, который вы можете передать в приложение вкладки страницы для настройки отображения, — это параметр app_data, который будет отправлен в свойстве page подписанного_запроса, но это относится только к ссылкам, которые содержат этот параметр: пользователи, щелкающие вкладку страницы напрямую не будет передан этот параметр и будет получен ненастраиваемый контент

См. руководство по вкладкам страниц в разделе начало работы Документы для получения дополнительной информации

person Igy    schedule 22.10.2012
comment
То есть, если я правильно вас понял, я должен использовать идентификатор страницы FB в качестве идентификатора? Итак, если я правильно вас понимаю, URL-адрес в настройках приложения остается прежним, но в моем коде для страницы я запрашиваю у FB идентификатор страницы, который затем позволяет мне настраивать мой контент. Это правильно? недостатком, который я обнаруживаю, является то, что я не могу добавить это более одного раза. На моем сайте я хочу, чтобы мой пользователь мог создавать более одного из этих фреймов. У каждого будет разное содержание... - person TJ Sherrill; 25.10.2012
comment
Вы уже не можете добавить одно и то же приложение (идентифицируемое по идентификатору) более одного раза на страницу, хотя я думаю, вы могли бы использовать один и тот же внутренний код, если ваши разные идентификаторы приложений использовали немного разные URL-адреса обратного вызова с некоторым идентификатором, специфичным для приложения. Я предполагаю, что вы не знали об этом, что объясняет, почему вы еще не использовали идентификатор страницы в качестве уникального идентификатора. Вам не нужно «спрашивать» об этом у facebook, каждый запрос к вашему приложению, когда он загружается на вкладке страницы, будет запросом POST, содержащим signed_request, который включает идентификатор страницы. - person Igy; 25.10.2012
comment
так что мне просто нужно проанализировать signed_request, получить идентификатор страницы и использовать его в моем вызове iframe, чтобы он получил правильные данные? - person TJ Sherrill; 25.10.2012