«Диалог запроса» запрашивает обратный вызов при нажатии кнопки отмены или закрытия

#facebook #request #friend #invite

#Facebook #запрос #друг #пригласить

Вопрос:

Я новичок в разработке приложений для Facebook, а также новичок в программировании на JavaScript и PHP.

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

Когда появляется диалоговое окно запроса, я выбираю друзей, которых я хочу, а затем нажимаю «Отправить запросы», выполняется обратный вызов (ответ), и друзья, получающие запросы, уведомляются, как и ожидалось. Но, если я нажму «Отмена» или кнопку закрытия синего цвета, обратный вызов (ответ) также выполняется, но выбранные друзья не получают уведомления о запросе.

Вот мой код:

 function requestCallback(response)
{
    //console.log(response);
    location.href='step2.php';
}
  

Итак, независимо от того, нажимаю ли я кнопку «Отмена» или «Закрыть», приведенный выше сценарий все равно выполняется (переход на страницу step2.php Уточняю я.)

Я хочу, чтобы, когда пользователь нажимает кнопку «Отмена» или кнопку «Закрыть модальное окно», страница оставалась на той же странице.

Кто-нибудь знает, как решить эту проблему?

Спасибо!

Ответ №1:

Вы можете просто проверить, что находится внутри объекта ответа Facebook, потому что это не будет то же самое, если запросы были отправлены или нет!

Что-то вроде :

 function requestCallback(response)
{
    if(response amp;amp; response.request_ids) {
         // Here, requests have been sent, facebook gives you the ids of all requests
         //console.log(response);
         location.href='step2.php';
    } else {
         // No requests sent, you can do what you want (like...nothing, and stay on the page).
    }
}
  

Или, если вы используете новую структуру (запрос 2.0 эффективен):

 function requestCallback(response)
{
    if(response amp;amp; response.request) {
         // Here, requests have been sent, facebook gives you the request and the array of recipients
         //console.log(response);
         location.href='step2.php';
    } else {
         // No requests sent, you can do what you want (like...nothing, and stay on the page).
    }
}
  

Посмотрите на структуру объекта ответа, чтобы создать свое условие. Обратный вызов запускается даже при нажатии кнопки «Закрыть«, чтобы иметь возможность заметить, когда ваш пользователь завершает диалог. Вам решать проверить, отправлял ли он запросы, и действовать так, как вы хотите! 🙂

Кроме того, что-то важное: Facebook обновил свою систему запросов несколько недель назад, сделав доступными «Запросы 2.0» в настройках ваших приложений. По умолчанию он отключен, но если вы его активируете, структура объекта ответа при отправке запросов людям изменится. Поэтому вам придется обновить свое условие при обратном вызове!

Здесь все объясняется: http://developers.facebook.com/blog/post/569 /

Комментарии:

1. Спасибо, совершенно забыл добавить и эту часть, как это было в ссылке! 🙂

2. Спасибо, ребята, похоже, мне нужно научиться писать javascript внутри if и else 🙂