Ich versuche, mich über soziale Websites in Laravel 5.1 einzuloggen. Ich habe Socialite installiert und folgendes Tutorial:
Ich habe jeden Schritt befolgt, wenn ich versuche, mich mit Github einzuloggen, es zu Github umleiten und nach dem Login auf URL-Callback umleiten, aber mein Problem ist, dass es keine Benutzerdaten in meiner Datenbank speichert.
Update-1
Jetzt ist mein Problem, wie man Benutzer unter Verwendung des sozialen Netzes authentifiziert. Es folgt mein Code, aber es wird ein Fehler ausgegeben, der besagt, dass das Passwort nicht definiert ist. Dieser Fehler, weil Auth::attempt()
den Parameter password hat.
Update-2
Nach einigen Recherchen wurde mir klar, dass ich Custom Authentication Drivers erstellen muss. Wenn jemand eine Idee hat, bitte posten Sie Ihre Antworten
dieselbe Frage vor einem Jahr gestellt
Nun, die allererste Sache, die ich vermute, ist, dass du php artisan migrate
ausgeführt hast (und dass dein Hauptproblem sein könnte ).
Als nächstes das Problem, das Sie beim Speichern von Daten in der Datenbank haben, haben Sie eine funktionierende Verbindung zu Ihrer Datenbank von dieser Klasse \App\User
? Wenn Sie es anders benannt haben, bitte ich Sie, diesen Teil nach dem ersten \App\[YourClassName]
zu ändern.
Wenn das richtig funktioniert, haben Sie möglicherweise Probleme, Daten zurück zu bekommen. Versuchen Sie es einfach so auf einer anderen Route:
%Vor%Und wenn Sie eine Ausgabe auf dem Bildschirm bekommen, ist das in Ordnung. Wenn Sie nichts erhalten, überprüfen Sie Ihre github-Konfigurationen.
Und ja, nur noch eine Sache ... Wenn Sie die gewünschte Ausgabe nicht bekommen, versuchen Sie es unten zu kommentieren. Aber ich bin ziemlich sicher, dass diese definitiv funktionieren werden.
Update-1 Antwort :
Wenn Sie versuchen, sich für Ihren Benutzer anzumelden, und Sie irgendein soziales Profil wie sagen wir FB verwenden, müssen Sie so gehen:
Und das ist nicht nur ein Fall von FB, Sie erhalten einige spezifische Codes wie in Google, Sie erhalten einen Refresh-Token-Code und in Twitter einen permanenten Zugriffstoken und ein Geheimnis. Also versuche einfach so zu gehen. Oder haben Sie einen bestimmten Begriff als Passwort für Ihren Benutzer. str_random()
kann auf diese Weise hilfreich sein, und ich empfehle dringend, dass anstelle dieser beiden.
Update-2-Antwort :
Ich empfehle nicht, das durchzugehen, weil Sie nichts bekommen werden, wenn Sie das Rad neu erfinden. Aber immer noch, wenn Sie durch diesen fiesen Prozess gehen wollen, hier ist der Link.
Es liegt an Ihnen, das zu verwalten.
Sie finden eine interessante Diskussion , die einige Möglichkeiten aufzeigt, was Sie tun können.
Sobald Sie von Github umgeleitet werden, sollten Sie in der Lage sein, auf die Details wie folgt zuzugreifen.
%Vor% $user->getId()
wäre die eindeutige ID, die von Github zurückgegeben wird.
Speichern Sie dieses Feld irgendwo in Ihrer Datenbank. Wenn Sie sie zu Ihrer Benutzertabelle hinzufügen möchten, könnten Sie so etwas tun:
%Vor%Ich empfehle das nicht als die Art, es zu tun, aber es sollte Ihnen genug von einem Beispiel geben, damit es funktioniert.
Wenn jemand versucht, sich mit Github anzumelden, wenn diese ID nicht existiert, erstellen Sie entweder einen neuen Account oder geben einen Fehler aus.
Denken Sie daran, die zurückgegebene ID stammt von Github, nicht von Ihrer Webanwendung. Ihr Benutzer würde also eine "ID" für Ihre Web-App und eine "github_id" haben, die Sie speichern, damit Sie wissen, welchem Benutzer sie gehören.
Die Idee besteht darin, eine Tabelle für die verbundenen Konten jedes Benutzers zu führen. Die Tabelle enthält user id
, social account type
und social account id
.
Benutzer = & gt; hat viele "soziale Konten"
soziales Konto = & gt; hat einen "Benutzer"
Wenn sich ein Benutzer mit einem sozialen Konto anmeldet, suchen wir nach dem sozialen Konto mit dem social account id
und type
. Holen Sie sich das Benutzerobjekt und melden Sie sich sofort an.
Wenn ein Benutzer nicht gefunden wird und das soziale Netzwerk api die E-Mail-Adresse des Benutzers zurückgibt, erhalten wir den Benutzer mit email
und melden sich beim Benutzer an. Verbinden Sie auch das neue soziale Konto mit dem Benutzerobjekt. Ich empfehle dies jedoch nicht, da es sich um ein Sicherheitsproblem handelt. Wenn jemand die E-Mail-Adresse seines sozialen Kontos in die E-Mail eines vorhandenen Nutzers in Ihrer App ändert, kann er problemlos auf das Konto zugreifen.
Wenn alles oben gescheitert ist, müssen wir den Benutzer zum Anmeldebildschirm führen, mit dem email
, das wir bereits vom sozialen Netzwerk api haben (falls verfügbar) und dem social account type
, wenn wir nach erfolgreicher Anmeldung eine Verbindung herstellen müssen .
Tags und Links php laravel laravel-socialite