Из документации Facebook :
Подписанный запрос отправляется через HTTP POST на URL-адрес, заданный в качестве вашего
Canvas URL в панели инструментов приложения.
[выделено автором]
Вы не можете получить доступ к этим данным POST напрямую через JavaScript:
POST данные должны быть получены сервером . В заключение браузер не предоставляет доступ к этим данным, если сервер отображает данные в коде клиента. Смежный вопрос: Как читать параметры запроса POST с помощью JavaScript
Теперь, почему это так? Я предполагаю, что причина в security : представьте себе, что вы отправляете пароль на POST-запрос на ваш сервер и какой-то вредоносный плагин JavaScript, который вы используете в своем приложении, пытается прочитать эти данные и отправить их на свой собственный вредоносный сервер. Это было бы совсем нехорошо.
В вашем случае данные POST, включая signed_request
, отправляются в ваше приложение через HTTP-запрос POST через Facebook с запросом страницы вашего приложения через Canvas URL , указанный вами на инструментальной панели приложения, или через * 1032. * URL перенаправления , указанный вами с помощью Плагин регистрации . Вы можете получить к нему доступ через FB.getLoginStatus
. Предварительные условия: вы либо используете приложение canvas (вы «внутри» Facebook, у вас есть закладка страницы или приложение Canvas), либо плагин регистрации , Обязательно получите статус по указанному вами URL. Смежные вопросы: Как вы публикуете в iframe? и getSignedRequest имеет значение null, когда отсутствует на вкладке
Также попробуйте позвонить FB.getLoginStatus
со вторым параметром, установленным на true
, чтобы принудительно совершить обратную передачу в Facebook - эффективно обновить кэш объекта ответа и решить проблемы с пользователями, которые вошли в (или вышли) из Facebook, так как последний полный просмотр сеанса или удаление вашего приложения в настройках их аккаунта:
FB.getLoginStatus(function(response) {
// this will be called when the roundtrip to Facebook has completed
}, true);
Также проверьте этот вопрос - это может помочь:
Подписанный запрос на вкладку iframe в Facebook всегда пуст