Форма потери данных при публикации из приложения Facebook Canvas iframe - PullRequest
3 голосов
/ 13 января 2011

Вот краткий список пунктов о том, чего я пытаюсь достичь:

  • Используйте Facebook C # SDK с asp.net MVC
  • Публикация пользовательских данных формы из приложения iframe для холста Facebook на сервер
  • Я в настоящее время строю из предоставленного образца MVC

Проблема, с которой я столкнулся, заключается в том, что при отправке формы в приложении холста iframe единственными данными, которые я получаю от Facebook, является параметр формы signature_request. Мне нужны данные из формы.

Я рассмотрел различные варианты решения проблемы ( см. Эту ссылку ), но не могу заставить их работать. Когда я получаю доступ к объекту FacebookSession, ключ сеанса не возвращается, поэтому я не могу следить за ссылками.

Буду очень признателен за любые указания относительно того, как это сделать.

Ответы [ 3 ]

1 голос
/ 27 января 2013

ow3n правильно , что вам нужно включить signed_request в ваши данные.Что для приложения C # на Facebook (при условии просмотра Razor) означает добавление этого к вашей форме:

<input type="hidden" value="@Request.Params["signed_request"]" name="signed_request" />
0 голосов
/ 31 мая 2011

У меня возникла та же проблема при передаче данных POST или GET с помощью приложения canvas, и я нашел ответ на в этом посте . Просто добавьте этот ввод в вашу форму:

<input type="hidden" value="<?php echo $_POST["signed_request"]?>" name="signed_request" />
0 голосов
/ 16 января 2011

Я столкнулся с той же проблемой и в итоге сделал это:

<form method="post" id="form1" target="_top">
<input type="text" id="sometext" />
<input type="submit" id="button" />
</form>

<script language="javascript" type="text/javascript">
$(document).ready(function () {
$("#button").click(function () {
var action = '<%= Url.CanvasAction("Create", "Home") %>';
action += "?sometext=" + escape($("#sometext"));
$("#form1").attr("action", action);
});
}
</script>

Недостатком этого является то, что теперь вы отправляете данные вдоль строки запроса с пределом для IE не более 2048 символов до того, как он отрубит материал, хуже всего то, что он открыт и открыт для пользователей этой машины, особенно если находится в общественном кафе-баре или где-то еще, и они могут видеть, что последний человек публиковал в вашем приложении!

Мне также хотелось бы знать, почему мозги в Facebook не могли просто принять отправленные им данные формы и просто дословно переслать их обратно в приложение -> Идиоты!

...