首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >类型错误:传递给Illuminate\Auth\SessionGuard::login()的参数1必须实现接口Illuminate\Contracts\Auth\Authenticatable

类型错误:传递给Illuminate\Auth\SessionGuard::login()的参数1必须实现接口Illuminate\Contracts\Auth\Authenticatable
EN

Stack Overflow用户
提问于 2018-05-27 00:30:57
回答 2查看 10.9K关注 0票数 1

我有下面的控制器,允许用户使用laravel auth系统登录,但也可以使用socialite登录facebook。

但是当用户点击"Login with facebook“按钮时,会出现这个错误:

代码语言:javascript
运行
复制
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.

用户存储在数据库中,但出现该错误。你知道为什么吗?

你知道为什么吗?

代码语言:javascript
运行
复制
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);
        }
    }
}

AuthController:

代码语言:javascript
运行
复制
class AuthController extends Controller
{
    public function login(){


        if(\Input::has('code')){

        }


        return \Socialite::with('facebook')->redirect();
    }
}

LoginController:

代码语言:javascript
运行
复制
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;
    }


}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-27 00:46:44

试一试

代码语言:javascript
运行
复制
$user = new User;
$user->name = $userFace->name;
$user->surname = "";
$user->email = $userFace->email;
$user->password = bcrypt($user->name);
$user->save();
Auth::login($userFace);
票数 1
EN

Stack Overflow用户

发布于 2021-12-16 15:37:04

类AuthController扩展了控制器{

代码语言:javascript
运行
复制
public function redirectToProvider($provider)
{
    return Socialite::driver($provider)->redirect();

}


public function handleProviderCallback($provider)
{
    $userFace = Socialite::driver($provider)->user();
    // $user->token;

更正AuthController的拼写并使用它。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50544857

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档