Laravel socialite $user->getId()?
Laravel socialite $user->getId()?
我不确定这是否是导致我出现问题的真正原因,但也许有人会知道。当我使用 Laravel Socialite 然后去:
$social_user = Socialite::driver($provider)->user();
然后在我的代码中的其他地方执行此操作:
if ($authUser = User::where('provider_id', $social_user->id))
return $authUser;
出于某些疯狂的原因,我收到了这样的错误:
传递给 Illuminate\Auth\SessionGuard::login() 的参数 1 必须实现接口 Illuminate\Contracts\Auth\Authenticatable,给定 Illuminate\Database\Eloquent\Builder 的实例
但是,如果我这样做,我不会收到错误消息:
if($authUser = User::where('email', $social_user->email)->first())
return $authUser;
我这样登录这个用户:
Auth::login($authUser, true);
有谁知道为什么?我正在使用 laravel 5.2
错误消息实际上是自我解释的。当您执行 User::where('provider_id', $social_user->id)
时,您最终会得到实现 Illuminate\Database\Eloquent\Builder
的 构建器对象 。您可以对其调用 ->get()
以获得 结果集合 (在您的情况下实现 Illuminate\Contracts\Auth\Authenticatable
的对象集合,因此您可以迭代它们),或者像您一样,您可以获得 第一次匹配 与 ->first()
(一个实现 Illuminate\Contracts\Auth\Authenticatable
的对象)。您可以在 Eloquent documentation.
中阅读更多内容
要点是 直到您调用 ->get()
或 ->first()
您正在使用 builder 对象 .其实还有->find()
方法,用来通过pk
检索记录,你不能用它来通过约束(where)搜索记录,但它也是returns模型对象。
我不确定这是否是导致我出现问题的真正原因,但也许有人会知道。当我使用 Laravel Socialite 然后去:
$social_user = Socialite::driver($provider)->user();
然后在我的代码中的其他地方执行此操作:
if ($authUser = User::where('provider_id', $social_user->id))
return $authUser;
出于某些疯狂的原因,我收到了这样的错误:
传递给 Illuminate\Auth\SessionGuard::login() 的参数 1 必须实现接口 Illuminate\Contracts\Auth\Authenticatable,给定 Illuminate\Database\Eloquent\Builder 的实例
但是,如果我这样做,我不会收到错误消息:
if($authUser = User::where('email', $social_user->email)->first())
return $authUser;
我这样登录这个用户:
Auth::login($authUser, true);
有谁知道为什么?我正在使用 laravel 5.2
错误消息实际上是自我解释的。当您执行 User::where('provider_id', $social_user->id)
时,您最终会得到实现 Illuminate\Database\Eloquent\Builder
的 构建器对象 。您可以对其调用 ->get()
以获得 结果集合 (在您的情况下实现 Illuminate\Contracts\Auth\Authenticatable
的对象集合,因此您可以迭代它们),或者像您一样,您可以获得 第一次匹配 与 ->first()
(一个实现 Illuminate\Contracts\Auth\Authenticatable
的对象)。您可以在 Eloquent documentation.
要点是 直到您调用 ->get()
或 ->first()
您正在使用 builder 对象 .其实还有->find()
方法,用来通过pk
检索记录,你不能用它来通过约束(where)搜索记录,但它也是returns模型对象。