2012-04-03 8 views
2

Da ein Facebook-Benutzer sich irgendwann in Ihrer Facebookapp eingeloggt hat (mit fb.login) und dieser Benutzer in der Datenbank gespeichert wurde. Wie können Sie den Benutzer erneut mit Ihrer App authentifizieren lassen, nachdem der AccessStoken abgelaufen ist (fb.api ('/ me') schlägt fehl).Re-Authentifizieren eines Facebook-Benutzers einmal eingeloggt

Die signierte Anfrage enthält die Benutzer-ID, aber wie loggen Sie sich von dort aus ein?

Ich benutze die PHP sdk und ich überprüfe grundsätzlich mit FB.api ('/ me') gleich zu Beginn entweder auf eine Willkommensseite oder die Benutzerseite. Aber FB gibt in einigen Fällen falsch zurück, in der Regel nach einem Tag oder 2. Also habe ich angefangen zu glauben, dass es wegen des Accesstoken abgelaufen ist. Ich habe keine Ahnung, wie ich mich erneut authentifizieren muss, ich weiß nur, dass die Benutzer-ID immer noch in der signierten Anfrage liegt.

Antwort

0

Verwenden Sie die Javascript-SDK den Benutzer aufzufordern, über Facebook einloggen:

https://developers.facebook.com/docs/reference/javascript/FB.login/

Alternativ könnten Sie versuchen, den Code zurückgegeben von Facebook während server-side auth speichern und verwenden sie ein neues Token anzufordern, wenn der Benutzer kehrt zurück.

+0

Ich bin auf der Suche nach einer automatisierten Sache, im Hintergrund, serverseitig. Wenn Sie ein Popup erneut anzeigen lassen (auch wenn es automatisch aktiviert wird), ist es nicht sehr benutzerfreundlich. Alsoo Javascript Redirects sind böse (load index.html, dann ein Popup, dann redirect to welcome.html) – Jareish

+0

https://developers.facebook.com/docs/reference/javascript/FB.getLoginStatus/ ist wahrscheinlich mehr anwendbar für die Entscheidung, ob oder nicht, um die Login-Schaltfläche anzuzeigen – Igy

+0

Er bittet um Hilfe mit PHP Facebook SDK .. nur mit "Use Javascript SDK" ist nicht wirklich hilfreich. – Gidogeek

0

Setzen Sie in Ihrem Javascript folgenden Code ... es wird Login Popup öffnen, wenn der Benutzer in

nicht angemeldet ist

FB.getLoginStatus (function (Antwort) {

if (response.authResponse) { 
    fbUserId = response.authResponse.userID; 
    token = response.authResponse.accessToken; 
} else { 
    FB.login(function(response) { 
     if (response.authResponse) { 
      fbUserId = response.authResponse.userID; 
      token = response.authResponse.accessToken; 
     } 
     else { 
      console.log('User cancelled login or did not fully authorize.'); 
     } 
    }); 

    } 

}, true);

+0

Wieder kann ich das Javascript SDK für die Vorauthentifizierung nicht verwenden. Der Benutzer wird aufgefordert, sich am Ende der App mit Javascript sdk zu authentifizieren. Wenn er nach ein paar Tagen zurückkommt, muss ich mit dem php sdk nachsehen, anderen Nutzern, die die App zum ersten Mal sehen, wird sofort ein Popup angezeigt. Das ist extrem benutzerunfreundlich und Sie werden die Konvertierung verlieren. Also wieder, wie melde ich den Benutzer, mit einem signed_request OHNE Javascript SDK. Es muss serverseitig und anomyn sein (der Benutzer merkt es nicht, da er bereits Berechtigungen erteilt hat) – Jareish

Verwandte Themen