2017-02-11 14 views
2

Ich Integration Facebook-Login in meinem Web-app, aber ich bekomme diese Fehlermeldung:Laravel 5.4 - Benutzer

ErrorException in SessionGuard.php line 407: Argument 1 passed to Illuminate\Auth\SessionGuard::login() must implement interface Illuminate\Contracts\Auth\Authenticatable, string given, called in /Applications/XAMPP/xamppfiles/htdocs/shop/vendor/laravel/framework/src/Illuminate/Auth/AuthManager.php on line 294 and defined

ich sah, dass das Problem ist, wenn ich den neuen Benutzer zu erstellen:

public function findOrCreateUser($user, $provider) 
{ 
    $authUser = User::where('provider_id', $user->id)->first(); 
    // if user exist login 
    if ($authUser) { 
     return $authUser; 
    } 

    // if user don't exist - Create new user 
    $test = DB::table('users')->insert([ 
       'name'  => $user->name, 
       'email' => $user->email, 
       'provider' => $provider, 
       'provider_id' => $user->id 
      ]); 

    return 'Hello'; // just try if it work! 
} 

Benutzer ist korrekt erstellt, aber ich bekomme den Fehler oben. Ich kann meine Nachricht "Hallo" nicht sehen. Wenn ich die create-Methode wie folgt ersetze:

es funktioniert gut. Aber ich will nicht aufhören nach dem Erstellen des Benutzers; Ich würde gerne eine andere Sichtweise zurückgeben.

Antwort

0

Es gibt mehrere Möglichkeiten, wie eine neue Zeile in Laravel in eine Tabelle eingefügt wird.

Eine Möglichkeit, es zu tun ist

User::create([ 
     'name'  => $user->name, 
     'email' => $user->email, 
     'provider' => $provider, 
     'provider_id' => $user->id 
]); 
return view('your_view'); 

Aber Sie müssen diese in Ihrem Modell haben (für Massenzuordnung)

protected $fillable = ['name','email','provider','provider_id']; 

Andere Art und Weise neue Zeile einzufügen nächsten ist

$user_database = new User; 
$user_database->name = $user->name; 
$user_database->email = $user->email; 
$user_database->provider = $provider; 
$user_database->provider_id = $user->id; 
$user_database->save(); 
return view('your_view'); 

Ich hoffe, es hilft Ihnen. Weitere zusätzliche Hilfe Scheck official documentation

+0

ich bekomme den gleichen Fehler :( –

0

Ich glaube nicht, diese Linie das Problem $test = DB::table('users')->inse... Check in

if ($authUser) { 
    dd('here comes the boom.....'); 
    return $authUser; 
} 

Auch halten $authUser ist User Typ Objekt, in dem als $testboolean, wenn die Bedingung im Auge ist die Ursache!