Доступ к данным POST в приложении Facebook Canvas - PullRequest
1 голос
/ 10 октября 2011

В моем приложении Facebook для canvas / iframe есть простая форма, и я пытаюсь передать значения как POST. Теперь от прочтения всего этого по всему С.О. и в последних документах FB, насколько я понимаю, все данные, отправленные через форму POST, могут быть доступны на принимающей стороне из объекта $ _REQUEST.

Я тоже читаю в другой ветке о С.О. что для того, чтобы POST-формы работали, вам нужно передать вход с именем Sign_request со значением в качестве текущего Sign_request (у меня есть подписанный запрос, работающий нормально в противном случае ... все элементы входа и аутентификации работают нормально). Это нигде не упоминается в официальных документах FB.

Так что моя проблема в том, что все, что возвращается в объекте $ _REQUEST, это подписанный запрос и куча других сессионных вещей. Мои входные данные нигде не найдены.

Единственный способ, которым я могу их прочитать, - установить метод формы на «ЗАПРОС», который даже не является методом реальной формы. Но затем он берет все мои входные данные и отправляет их в виде аргументов GET в URL. Какой ужас. Вот пример страницы из моего приложения Canvas с формой, которую я использую, чтобы попытаться отладить (опуская все аутентификационные данные):

<form enctype="application/x-www-form-urlencoded" method="POST" target="_top" id="my_form" action="https://apps.facebook.com/myfakeapp/form_test.php">
<input type="text" name="test1" value="58" />
<input type="text" name="test2" value="123" />
<input type="text" name="test3" value="434" />
<input type="text" name="test4" value="645" />
<input type="text" name="signed_request" value="<? echo $_REQUEST['signed_request']; ?>">
<input value="Submit Answers" type="submit">
</form>

Документы FB вводят в заблуждение, поскольку некоторые из них относятся к этому бета-режиму миграции, который они использовали для более старых приложений, работающих с запросами POST для приложений Canvas.

1 Ответ

1 голос
/ 11 октября 2011

Вы комбинируете два отдельных метода ... цель отправки формы с target = _top и action = apps.facebook.com / xxx состоит в том, чтобы заставить Facebook автоматически отправлять параметр signature_request. Если вы отправляете его самостоятельно, вы должны использовать «внешний» адрес вашей страницы в качестве действия и оставить атрибут target отключенным. Используя target = _top, вы перезагружаете всю платформу и отправляете данные формы в Facebook, который, конечно, игнорирует это.

...