Mit Facebook Graph API mit dem JS-SDK in einer canvas-Seite, iFrame in Safari kaputt ist

So, ich bin versucht, die Graph API mit dem Facebook JS SDK, und ich bin immer die folgende Fehlermeldung in Safari:

"OAuthException: Eine active access token muss verwendet werden, zur Abfrage von Informationen über den aktuellen Benutzer."

Ich vermutete, es hatte mit der Tatsache zu tun, dass Safari ist sehr streng mit x-cookie-domain-Einstellung und so versuchte ich es in Firefox mit cookie option auf false gesetzt in FB.init(). Ich habe in der Tat festgestellt, dass ich immer den gleichen Fehler für meine FB.api() Anfragen.

FB.init({
  appId:  "<%= app_id %>",
  status: true, //check login status
  //We cannot rely on this cookie being set in an iframe. I found this
  //out because the Graph API was not working in Safari.
  //cookie: true, //enable cookies to allow the server to access the session
  xfbml:  true, //parse XFBML
  channelUrl: window.location.protocol + '//' + window.location.host + '/fb/canvas/channel.html'
});

So Frage ich mich... ist es ein guter Weg, um manuell die access_token query-parameter in der FB.api() Anfrage?

Wenn die FB.init() cookie wird richtig gesetzt, das ist, was die FB.api() request-Parameter wie folgt Aussehen:

access_token  xxxxxxxxxxxx|1.xxxxxxxxxxxxxxxxxxxxxx__.3600.xxxxxxxxxx-xxx|xxxxxxxxxxxxxxxxxxxxxxxxxxx
callback      FB.ApiServer._callbacks.xxxxxxxxxxxxxxx
pretty        0
sdk           joey

In Safari (oder, wenn die cookie FB.init() option ist nicht gesetzt) die FB.api() request-Parameter wie folgt Aussehen:

callback      FB.ApiServer._callbacks.xxxxxxxxxxxxxxx
pretty        0
sdk           joey

Nun... natürlich wird meine app hat die Fähigkeit, erzeugen die access_token auf der server-Seite... ich Frage mich, ob es irgendeinen Weg kann ich manuell einstellen FB.api() um meine server-Seite generiert access_token.

  • Ich denke es ist ein weiterer Weg, dies zu tun. Im Grunde, da haben wir mal zufällig auf das setzen von cookies auf die ursprüngliche post-Anforderung, füllt das iFrame, können wir die Gelegenheit nutzen, um imitieren die fbs_xxxxxxxxx cookie, dass die FB-JS-SDK versucht, während FB.init(). Nun... der cookie-Wert, dass die SDK-sets sieht wie folgt aus: fbs_xxxxxxxxx="access_token=xxx&expires=xxx&secret=xxx&session_key=xxx&sig=xxx&uid=xxx". Die access_token und expires Teile sind sehr einfach. Aber ich bin mit ein wenig Mühe, herauszufinden, die anderen Teile.
Schreibe einen Kommentar