php - 类型错误:传递给 Illuminate\Auth\SessionGuard::login() 的参数 1 必须实现接口 Illuminate\Contracts\Auth\Authenticatable
问题描述
我有下面的控制器,允许用户使用 laravel auth 系统登录,也可以使用社交名流登录 facebook。
但是,当用户单击“使用 facebook 登录”按钮时,会出现以下错误:
Type error: Argument 1 passed to Illuminate\Auth\SessionGuard::login() must implement interface Illuminate\Contracts\Auth\Authenticatable, string given, called in AuthManager.php on line 292.
用户存储在数据库中,但出现该错误。你知道为什么吗?
你知道为什么吗?
class OauthController extends Controller
{
public function redirectToProvider($provider)
{
return Socialite::driver($provider)->redirect();
}
public function handleProviderCallback($provider)
{
$userFace = Socialite::driver($provider)->user();
// $user->token;
$findUser = User::where('email', $userFace->email)->first();
if($findUser){
Auth::login($findUser);
}else{
$user = new User;
$user->name = $userFace->name;
$user->surname = "";
$user->email = $userFace->email;
$user->password = bcrypt($user->name);
$user->save();
Auth::login($userFace->email);
}
}
}
授权控制器:
class AuthController extends Controller
{
public function login(){
if(\Input::has('code')){
}
return \Socialite::with('facebook')->redirect();
}
}
登录控制器:
class LoginController extends Controller
{
use AuthenticatesUsers;
protected $redirectTo = '/';
public function __construct()
{
$this->middleware('guest')->except('logout');
}
protected function redirectTo()
{
if(Route::getRoutes()->match(Request::create(\URL::previous()))->getName() == "cong.reg") {
return (Request::create(\URL::previous())->getRequestUri());
}
return $this->redirectTo;
}
}
解决方案
尝试
$user = new User;
$user->name = $userFace->name;
$user->surname = "";
$user->email = $userFace->email;
$user->password = bcrypt($user->name);
$user->save();
Auth::login($userFace);
推荐阅读
- react-native - Mixpanel.sharedInstanceWithToken 不是本机反应中的功能
- java - 几秒钟后只执行一次任务
- html - 在角度 5 中为 ngModel 添加千位分隔符?
- android - 无法解析为快照:Firebase setValue ANDROID
- perl - 在脚本的不同部分使用不同的哈希值
- php - 在路由中看不到登录,如何在 jeremykenedy/laravel-auth 的 Laravel 5.6 克隆中向登录过程添加其他操作
- instagram - Instagram API 媒体/评论未显示最近的评论
- django-2.0 - django 2.0:不使用正确的视图
- html - 如果我使用引导程序 4,我可以使用引导程序 3.2 选项卡和药丸吗
- c# - 如果有另一个具有特定配置文件的 chrome 实例,C# ChromeDriver 构造函数会挂起