Wie kann ich einige Werte auf meiner facebook-canvas-app in einem query-string?
Habe ich entwickelt, eine facebook-canvas-app, welche Beiträge für Nutzer-newsfeeds, und ich möchte in der Lage sein, um Benutzern zu erlauben, klicken Sie auf den link in den newsfeed und werden ergriffen, um meine app zusammen mit einigen Daten, die präsentiert werden in der app (zum Beispiel, indem Sie es in der querystring).
Wenn ich die Verknüpfung erstellen, die veröffentlicht werden, die auf Benutzer-newsfeed habe ich den link Feld -
http://apps.facebook.com/myappname/?datatopass=mydata
Dies funktioniert, wenn ein Benutzer auf diesen link klickt der browser leitet Sie auf diesen link. Aber ich kann nicht auf die $_GET['datatopass'] variable (mit PHP), und es scheint leer zu sein. Ich habe versucht, mit Hilfe von javascript, um die Ausgabe der Fenster.Speicherort-variable und ich sehe nicht ein, meine querystring übergeben, obwohl ich die url sehen, wie es oben in meinem browser-Adresse bar. Was ich sehe, ist, die url der Website, die ich in den facebook developer-app und die Staatliche und code params, dass facebook verwendet. Es beraubt hat mein datatopass param, dass ich wollte in der Lage sein zu Lesen, wenn meine app gestartet.
So ... wie kann ich das weitergeben und die Daten, die ich senden möchten? Ich weiß, es ist ein app_data-Feld, wenn Sie mit signed_request aber so wie ich das verstehe ist das nur gut für die apps, die sitzen in einem Tab auf einer Seite. Ich bin mit dem iFrame canvas-app Methode.
Wenn ich einen Blick in mein apache-server den access-logs kann ich sehen, dass es einen Eintrag für meine Website-url-Adresse mit meinem angehängt querystring -
my.domain.com 123.456.7.890 - - [23/Feb/2012:14:21:19 +0000] "POST /facebookapp/?datatopass=mydata HTTP/1.1" 200 300 "http://apps.facebook.com/myappname/?datatopass=mydata" "Mozilla/5.0 (Windows NT 5.1; rv:11.0) Gecko/20100101 Firefox/11.0"
Gefolgt von einem GET entry -
my.domain.com 123.456.7.890 - - [23/Feb/2012:14:21:20 +0000] "GET /facebookapp/directory/?state=99226fiawhoidhaoia09809a085d94832&code=ahfakshdlkfhalksj.... HTTP/1.1" 200 27094 "http://my.domain.com/facebookapp/?play=asd" "Mozilla/5.0 (Windows NT 5.1; rv:11.0) Gecko/20100101 Firefox/11.0"
Meine Entschuldigung, die ich nicht wirklich verstehe, was die oben tun, aber gehofft, es würde nützlich sein, zusätzliche Informationen helfen, diese zu beantworten.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Facebook ermöglicht es Ihnen, um die übergabe von Daten über eine app_data-variable. Diese variable ist Teil der unterschriebene Antrag und eine json-kodierten string. So ein Beispiel könnte so gehen:
Diese app_data variable wird Teil der Facebook unterzeichnete Anfrage. Mehr Informationen finden Sie hier: http://developers.facebook.com/docs/authentication/signed_request/
Sie einfach analysieren die signierte Anfrage und Sie können dann Zugriff auf die Daten über das app_data-wie die Dokumentation zeigt:
So, dann können Sie die Funktion aufrufen und den Zugriff auf die app_data so es mit so etwas wie dies:
Möglicherweise müssen einen /nach dem app-Namen in der URL ich.e..
http://apps.facebook.com/myappname/?datatopass=mydata
Verwenden Sie die rewrite-engine? Facebook unterstützt, also ein link wie apps.facebook.com/myapp/data/anotherdata ist gültig.
Versuchen Sie es auf diese Weise und print_r($_REQUEST) bis chek-wenn es übergeben wird.
Facebook verwendet, um GET-Parameter zum canvas-apps. Diese Parameter übergeben wurden, über den IFRAME-tag, die Facebook verwendet, um das einbetten der app. Jedoch, dies stellt ein Sicherheitsrisiko dar, da alle Skripte enthalten, die von der Seite (css, js...) haben Zugriff auf diese Parameter über den Referrer. Als Ergebnis, werden alle apps, die benötigt wurden, zu migrieren, um mittels POST-Parameter statt. Bitte Lesen Sie dieses Dokument für weitere Informationen:
http://developers.facebook.com/docs/canvas/post/
Werte, die Sie übergeben Sie in der apps.facebook.com link ging Sie in Ihre Leinwand-Seite als auch. Die einzige Ausnahme ist die
signed_request
, die Facebook-Beiträge auf Ihrer Seite "Leinwand".