2016-03-30 3 views
0

Ich habe einen Fehler beim Anmelden mit dem Facebook SDK in meiner App.Facebook Login Fehler. Der Parameter "state" aus der URL und der Sitzung stimmen nicht überein

Fehler sagt: "Cross-Site-Anfrage Fälschung Validierung fehlgeschlagen. Die" State "Parameter aus der URL und Sitzung stimmen nicht überein".

Es geht nicht um fehlende session_start() oder doppelt ausgeführt getLoginUrl() usw.

Ich führte gerade einen Test und fand heraus, dass mein .htaccess das Problem ist. Wenn .htaccess auf dem Server FB ist, wird der Fehler zurückgegeben. Ohne .htaccess funktioniert es gut.

Options -Indexes 
RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ - [NC,L] 
RewriteRule ^.*$ index.php [NC,L] 

Was ist hier falsch?

Antwort

0

Deshalb müssen Sie Ihre Benutzer immer in einer www-Version Ihrer Website mitnehmen. Wenn Sie nur mypage.com verwenden, müssen Sie immer www.mypage.com verwenden, um Ihre Anmeldung bei Facebook zu bestätigen. In dem Teil, in dem Sie die $ loginUrl verwenden, die als Beispiel das Dokument von SDK Facebook bereitstellt, müssen Sie zum Benutzer umleiten und ihn auf die gleiche Seite zurückbringen.

Ich meine, wenn Sie in Ihrer URL myexample.com/logincallback.php setzen und Sie bringen die Benutzer in einer Version www.myexample.com/logincallback.php Sie nie die Validierung von Facebook für die Marke zu beenden. Ich will ein Beispiel zeigen:

$helper = $fb->getRedirectLoginHelper(); 
    $permissions = ['email']; 
    $loginUrl = $helper->getLoginUrl('www.mywebsite.com/logincallback.php', $permissions); 

Wenn Sie diesen Code beenden, müssen Sie in developers.facebook.com, um Ihre Einstellungen App gehen und eine www-Version Ihrer Website in den Einstellungen konfigurieren> Erweitert> deautorisieren Callback URL

in diesem Bereich http://www.mywebsite.com/logincallback.php

So schreiben, wenn Sie .htaccess verwenden, um die Seite zu einer www-Version Ihrer Website zu umleiten, stellen Sie sicher, dass die gleiche URL in der deautorisieren Callback URL und in Ihrem getLoginUrl() zu verwenden,

Grüße.

0

Einsatz dieser Code

$_SESSION['FBRLH_state']=$_GET['state']; 

nach

$helper = $fb->getRedirectLoginHelper(); 
+0

Wenn ich das mache, bekomme ich "Graph zurückgegeben einen Fehler: Dieser Autorisierungscode wurde verwendet." stattdessen. – ynef

0

Nur eine statische Seite für Facebook Login erstellen und die Seite von "Login mit Facebook" -Taste aufrufen. Auf der Facebook-Anmeldeseite erhalten Sie die Login-URL und die Weiterleitung. Es wird am besten funktionieren. Überprüfen Sie den vollständigen Text im Blogpost.

Verwandte Themen