2 Stimmen

Unterzeichnete Anfrage nicht in der Facebook-App beim Absenden des Formulars verfügbar?

Ich entwickle eine Facebook-Anwendung zur Verwendung auf einer Seite. Es ist im Wesentlichen eine Seite mit einem Webformular, das dann einen Datenbankeintrag aus den übermittelten Daten erstellt. Das ist nicht allzu komplex. Die Komplexität kommt, wenn ich versuche, zwischen den Seiten zu unterscheiden, wenn ich die Beitragsdaten behandle. Das ist, was ich habe:

<?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>

Die Seite wird in den einzelnen Anwendungen gut angezeigt, wie man unter http://www.facebook.com/ukwrestlingevents?sk=app_162023107185208 . Wenn ich das Formular abschicke, erhalte ich jedoch die Ausgabe "Ungültige Seite", wie es in meinem System standardmäßig der Fall ist. switch Anweisung; als ob es keine signierte Anfrage gäbe, wenn ein Formular abgeschickt wird, obwohl ich dachte, die von Facebook verwendete Standardanforderungsmethode sei tatsächlich POST und nicht GET.

Irgendwelche Ideen?

10voto

Aron Punkte 3159

Dies ist nur eine Vermutung, aber ich denke, Sie müssen die signierte Anfrage als verstecktes Feld einschließen, um sie nach dem POST des Formulars weiterzugeben...

Also:

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

...sollte funktionieren...

0voto

Orhun Alp Oral Punkte 674

Wenn du deinen Seitennamen in die action=""-Methode einträgst, wird das Formular auf deiner php-Seite gepostet und nicht auf der Facebook-Seite, die du in deinem Browser siehst.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X