Как отправить запрос на Facebook, который ссылается на внешний сайт? - PullRequest
2 голосов
/ 27 октября 2011

В моем текущем приложении Facebook на основе .NET и FBML у меня есть код, который выглядит следующим образом:

<fb:request-form
        action="http://mysite.com/InvitesSent.aspx"
        method="POST"
        invite="true"
        type="SomeType"
        content="Here is an invite to <fb:req-choice url='http://mysite.com?<%=Params %>' label='My site' />">
    <fb:multi-friend-selector
            max="20"
            actiontext="Invite your friends!"
            showborder="false"
            rows="4"
            bypass="cancel"
            email_invite="false"
            exclude_ids="" /> 
</fb:request-form>

На моем сайте появляется селектор с несколькими друзьями, из которого пользователь выбирает некоторыедрузья и прессы «отправляют приглашения», после чего пользователь перенаправляется на http://mysite.com/InvitesSent.aspx.

. На другом конце получатели приглашения видят уведомление с кнопкой «Принять».Когда кнопка нажата, Facebook перенаправляет сразу на мой сайт с

http://www.facebook.com/l.php?u=http%3A%2F%2Fmysite.com%3F ...

, который является перенаправлением внешней ссылки Facebook.Этот редирект включает параметры, которые я указал в атрибуте URL fb: req-choice.

У меня такой вопрос: поскольку FBML должен быть прекращен, как мне добиться такого поведения в Javascript SDK?

Я могу отправлять уведомления с помощью FB.ui и apprequest, но, похоже, я не могу привязать параметры к URL-адресу, как я могу в FBML.Мне это нужно, поскольку я хочу наградить приглашающего, и для этого мне нужно иметь возможность отслеживать отдельные запросы.

Возможно ли что-либо из этого даже в новом SDK?Документация сбивает с толку и иногда делает различия между запросами и приглашениями, а иногда нет.Честно говоря, я не совсем уверен, есть ли разница, я просто цепляюсь за подсказки в FBML, такие как 'Invite = "True"', которые могут помочь мне найти решение.

1 Ответ

3 голосов
/ 27 октября 2011

Это больше невозможно, что видно из следующего абзаца в документации разработчика

Ответ пользователя

Если пользователь нажимает кнопку «Принять» в запросе, он будет отправлен на URL-адрес холста приложения, отправившего запрос.Этот URL-адрес будет содержать дополнительный параметр request_ids, представляющий собой список идентификаторов запросов, разделенных запятыми, на которые пользователь пытается воздействовать:

http://apps.facebook.com/[app_name]/?request_ids=[request_ids] Рекомендуется, когда пользователь попадает в ваше приложение.следует прочитать невыполненные запросы приложений.Если пользователь нажал на уведомление или запрос на панели инструментов, вам будет передан идентификатор запроса через URL.Затем, когда пользователь обрабатывает запросы, вы должны удалить их через Graph API.

Запросы 2.0 не будут удаляться, когда пользователь нажимает кнопку "Принять" в API Facebook.Вы должны прочитать и очистить их, используя Graph API.

Итак, вы можете попробовать это:

  1. когда пользователь отправляет приглашения / запросы своим друзьям, прочитайте request_ids в обратном вызове javascript и сохраните их в своей базе данных с помощью ajax (чтобы вы могли звонить InvitesSent.aspx).

  2. Когда приходит новый пользователь, прочитайте request_id и вознаградите пользователя, отправившего запрос.

Если вы можете сказать мне, что происходит, когда пользователь отправляет запрос с внешнего веб-сайта и другой пользователь принимает, с новым JS SDK, я могу быть более конкретным с решением.В основном, если вы будете следить за URL браузера, вы узнаете, как Facebook перенаправляет нового пользователя, который принял.В документации принятие упоминается только для приложений холста, поэтому я не уверен, что происходит с внешним сайтом.Если вы проверите это, мы можем понять это. EDIT: Как предположил Айги, я думаю, что принятие запроса всегда будет перенаправлять на холст.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...