提交表格时,Facebook应用程序中没有签名请求?

Mar*_*ean 2 php forms facebook http-post

我正在开发一个Facebook应用程序供页面使用.具有Web表单的页面必不可少,然后通过提交的数据创建数据库记录.没有什么太复杂的了.当我在处理发布数据时尝试区分网站时,会出现复杂性.这就是我所拥有的:

<?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>
Run Code Online (Sandbox Code Playgroud)

该页面在各个应用程序上显示正常,如http://www.facebook.com/ukwrestlingevents?sk=app_162023107185208所示.但是,当我提交表单时,我会收到"无效页面".输出是我的switch声明中的默认情况; 好像在提交表单时没有签名请求,即使我认为Facebook使用的默认请求方法确实是POST而不是GET.

有任何想法吗?

Aro*_*ron 10

这只是一个有根据的猜测,但我认为您必须将签名的请求作为隐藏字段包含在POST表单后传递它...

所以:

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

...应该管用...