Frage

Ich mache eine iFrame-Anwendung für Facebook der Facebook C # SDK. Ich habe es, dass der Benutzer authentifiziert und ich kann ihren Benutzernamen mit dem Graph-API (FaceBookApp.Api ( „/ Benutzer-ID“))

erhalten

Mein Problem ist jetzt, dass, wenn ich auf einer Seite einen AJAX-Aufruf tun kann ich nicht mehr die Api verwenden. Die Benutzer-ID ist 0. Wenn die Öffnung FireBug die Antwort der Anfrage „Nicht unterstützt get Anfrage.“ Ich vermute, dass dies etwas mit dem Gesicht zu tun hat, dass der AJAX-Request wird eine andere Sitzung für den Anruf verwenden und diese Sitzung nicht authentifiziert. Ich frage mich, ob es eine Möglichkeit, dies zu umgehen ist? Ich kenne ich die Seite machen konnte ich erneut authentifizieren bin anfordernden aber das würde bedeuten, ich für jede Anforderung müsste reauth, die nicht effizient scheint. Ich benutze JQuery, um die Anforderung zu machen.

Jede Hilfe ist sehr geschätzt.

Danke

War es hilfreich?

Lösung

Das Problem ist, dass mit einem Ajax-Aufruf in einem Iframe müssen Sie die Sitzung Informationen für den Client an den Server senden. Ansonsten hat der FacebookApp keine Möglichkeit, zu wissen, wer der aktuelle Benutzer ist. Sie können dies in einer von zwei Arten lösen.

  1. Sie können den gesamten signed_request Wert an den Server senden.
  2. Sie können die Javascript-SDK verwenden die Benutzer Zugriffstoken zu erhalten und senden nur dieser Wert an den Server.

Ich denke, der erste Weg ist der beste. Alles, was Sie tun müssen, ist Ihre Ajax-URL ändern, um den unterschriebenen Antrag wie diese enthält:

var ajaxUrl = '/services/example?signed_request=<%=Request.Querystring["signed_request "]%>';

Dann machen Sie einfach Ihren Anruf wie gewohnt mit der neuen URL. Danach wird die FacebookApp Klasse wird die Sitzung von dem Ajax-Request lesen und Sie werden gut zu gehen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top