2017-11-19 3 views
1

Ich füge gerade Socialite zu meiner Website hinzu, damit Benutzer sich von Facebook aus einloggen können.Laravel Socialite übergeben und abrufen benutzerdefinierte Daten?

public function redirectToProviderFacebook() { 
    return Socialite::driver('facebook')->redirect(); 
} 

public function handleProviderCallbackFacebook() { 
    $userSocial = Socialite::driver('facebook')->user(); 
    $email = $userSocial->getEmail(); 

    if (User::where('email', $email)->count() > 0) { 
     // log them in 
     Auth::login(User::where('email', $email)->first()); 
     return redirect()->route('home')->with('info', "You are now signed in."); 
    } else { 
     // register an account and log them in 
    } 
} 

Während der normalen Benutzerregistrierung frage ich nach drei Dingen: Benutzername, E-Mail und Passwort. Der Benutzername und die E-Mail sind Dinge, die du auf meiner Site niemals ändern kannst, da ihre Benutzernamen an viele Dinge gebunden sind.

Das Problem mit der Anmeldung mit Facebook ist, dass ich neue Benutzer in der Rückruffunktion registrieren muss. Daher kann ich sie nicht nach dem fragen, was ihre Benutzernamen sein sollen.

Gibt es eine Möglichkeit, wie ich den Benutzer vielleicht nach seinem bevorzugten Benutzernamen fragen könnte? Dann leite das wie folgt aus:

return Socialite::driver('facebook')->with('username', $request->username)->redirect(); 

dann abrufen, die Daten, die sie in der Callback-Funktion für Auth-Registrierung zu benutzen?

+0

Warum Sie nicht Benutzernamen des Benutzers nach der Authentifizierung gesetzt ein Formular? –

Antwort

0

ich bin nicht sicher über facebook, aber für github funktioniert es gut. Versuchen Sie folgendes:

public function socialLogin($loginFrom){ 
    return Socialite::driver('github') >redirectUrl('http://your-domain.com/callback?data=123')->redirect(); 
} 

auf Github App, die Sie nur setzen müssen: http://your-domain.com/callback