Подписанный запрос не доступен в приложении Facebook при отправке формы? - PullRequest
2 голосов
/ 01 апреля 2011

Я разрабатываю приложение Facebook для использования на странице.Важно, чтобы была страница с веб-формой, которая затем создает запись базы данных из представленных данных.Ничего сложного.Сложность возникает, когда я пытаюсь различать сайты при обработке почтовых данных.Вот что у меня есть:

<?php
require_once('../lib/facebook.php');
$facebook = new Facebook(array(
    'appId' => 'xxxxxxxxxxxxxxx',
    'secret' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
    'cookie' => true
));
$signed_request = $facebook->getSignedRequest();
switch ($signed_request['page']['id']) {
    case '144778562245193':
        define('SITE_ID', '3');
        define('SITE', 'UK Boxing Events');
        define('DOMAIN', 'ukboxingevents.com');
        define('BODY_CLASS', 'boxing');
    break;
    case '147183265335890':
        define('SITE_ID', '1');
        define('SITE', 'UK Wrestling Events');
        define('DOMAIN', 'ukwrestlingevents.com');
        define('ANALYTICS_ID', 'UA-xxxxxxx-xx');
        define('BODY_CLASS', 'wrestling');
    break;
    case '157856417600021':
        define('SITE_ID', '2');
        define('SITE', 'UK MMA Events');
        define('DOMAIN', 'ukmmaevents.com');
        define('BODY_CLASS', 'mma');
    break;
    default:
        die('Invalid page.');
    break;
}
if (isset($_POST['add_event'])) {
    // submit handler; writes to database
}
?>
<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>Add Event</title>
  </head>
  <body>
    <form action="" method="POST" id="add_event_form">
      ...
    </form>
  </body>
</html>

На отдельных приложениях страница отображается нормально, как видно на http://www.facebook.com/ukwrestlingevents?sk=app_162023107185208. Однако, когда я отправляю форму, я получаю «Недопустимая страница».вывод как регистр по умолчанию в моем операторе switch;как будто нет подписанного запроса при отправке формы, хотя я думал, что метод запроса по умолчанию, используемый Facebook, действительно был POST, а не GET.

Есть идеи?

Ответы [ 2 ]

10 голосов
/ 13 мая 2011

Это только обоснованное предположение, но я думаю, что вы должны включить подписанный запрос в качестве скрытого поля, чтобы передать его после того, как вы отправите форму ...

Итак:

<input type="hidden" name="signed_request" value="<?php print htmlentities($_REQUEST['signed_request']); ?>">

... должно работать ...

0 голосов
/ 05 апреля 2011

Если вы введете имя своей страницы в методе action = "", форма будет размещена внутри вашей страницы php, а не страницы facebook, которую вы просматриваете в своем браузере.

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