Ich versuche den Login mit Facebook in laravel 5 mit Socialize zu verwenden.
Hier ist mein Routendatei-Code.
%Vor% Login ist erfolgreich und ich bekomme den Code aber die Zeit von get $provider->user()
Ich bekomme den Fehler.
InvalidStateException in der AbstractProvider.php Zeile 161
Ich fühlte mich nicht wohl damit, Code, der einen Fehler signalisierte, zu kommentieren (wie in @Dipesh Shihoras Antwort), also grub ich ein wenig weiter. Ich entdeckte, dass der Fehler (in meinem Fall zumindest) durch ein Problem mit Sitzungen verursacht wurde.
Mein Dev-Server ist gemäß den Anweisungen in dieser Antwort eingerichtet. Grundsätzlich "spoof" ich Google, indem ich eine Rückruf-URL verwende, die wie eine öffentlich zugängliche Adresse aussieht.
Das InvalidStateException
-Problem wurde für mich angezeigt, weil ich meine Login-Seite bei http://localhost/login
besuchte und auf die Login-Seite von Google umleitete, die mich dann zu http://myapp.example.com/callback
zurück brachte. Das Problem ist, dass der Sitzungsschlüssel in einem Cookie gespeichert wird - ursprünglich war es ein Cookie für http://localhost
, aber wenn ich auf eine andere URL umgeleitet wurde, war der Cookie (und damit der Sitzungsschlüssel) nicht zugänglich. Daher war die Sitzung state
-Wert nach der Aktualisierung nicht vorhanden und die Ausnahme wurde ausgelöst.
Die Lösung? Stellen Sie sicher, dass mein gesamtes Browsen auf dem Dev-Rechner bei http://myapp.example.com
und nicht bei http://localhost
durchgeführt wurde.
Es funktioniert auf meiner Website, rufen Sie einfach - & gt; stateless (), bevor Benutzer
%Vor% Versuchen Sie, die korrekten Werte im Feld 'domain'
von config/session.php
und im Feld 'url'
von config/app.php
festzulegen. Dies scheint für mich den Ausschlag gegeben zu haben. Ich habe festgestellt, dass der Wert in session.php
ohne http://
sein sollte, während der Wert in app.php
mit http://
übereinstimmen sollte.
Ich empfehle Ihnen auch, diesem Leitfaden zu folgen: Ссылка . Es ist sehr hilfreich und klar.
Nachdem ich also etwas gegraben habe, war das Problem für mich, dass meine nginx-Konfiguration falsch war und die URL-Parameter (Code und Status) nicht korrekt an die index.php-Datei übergeben wurden und auf diese Weise die Prüfung zwischen dem Zustand von der Sitzung und der Staat von der URL scheiterte. Ich habe mein nginx conf so geändert, dass es so aussieht und es hat gut funktioniert.
%Vor%Für jeden, bei dem dieses Problem auftritt, können Sie den Domain-Wert in config / session.php auf Ihre Domain setzen und alle Cookies in Ihrem Browser entfernen, die sich auf Ihre App-URL beziehen. Sie können auch php artisan cache ausführen: clear und clear-compeated
Ich weiß nicht, ob das irgendjemanden hilft, aber meinen Session-Treiber von file
auf cookie
zu ändern, löschte das InvalidException
Problem für mich.
Sie erhalten diesen Fehler, weil Sie die Einstellungen Ihres sozialen Providers in Ihrer Konfigurationsdatei falsch haben oder Ihre Facebook-App nicht richtig eingerichtet haben.
Besuchen Sie developers.facebook.com und stellen Sie sicher, dass Ihre App-ID und geheimen Schlüssel korrekt sind und auf die richtige URL verweisen. Stellen Sie dann sicher, dass die Datei services.php Ihrer Laravel-App mit der richtigen Weiterleitung, ID und dem geheimen Schlüssel aktualisiert wurde.