Php 只有在生成JWT时第二次尝试后才返回正确的响应
我试图使用和在一起,但我面临着一些问题 我的目标是更新数据库中用户的Php 只有在生成JWT时第二次尝试后才返回正确的响应,php,lumen,laravel-socialite,Php,Lumen,Laravel Socialite,我试图使用和在一起,但我面临着一些问题 我的目标是更新数据库中用户的profile\u image\u url字段(如果用户已经存在),并给他令牌,如果用户不存在,则创建它并给他令牌 这就是我现在正在做的: public function handleProviderCallback(Request $request){ try{ $providerUser = Socialite::driver('facebook')->stateless()-
profile\u image\u url
字段(如果用户已经存在),并给他令牌,如果用户不存在,则创建它并给他令牌
这就是我现在正在做的:
public function handleProviderCallback(Request $request){
try{
$providerUser = Socialite::driver('facebook')->stateless()->userFromToken($request->fb_token);
$user = User::query()->firstOrNew(['email' => $providerUser->getEmail()]);
}catch(Exception $e){
return new JsonResponse(['status' => 'error', 'message' => 'Woops, some error happened']);
}
if(!$user->exists){
$user->name = $providerUser->getName();
$user->profile_image_url = $providerUser->getAvatar();
$user = $user->save();
}else{
$user->update(['profile_image_url' => $providerUser->getAvatar()]);
}
$token = JWTAuth::fromUser($user);
return $this->onAuthorized($token, $user);
}
这就是我在授权后返回的内容:
protected function onAuthorized($token, $user){
return new JsonResponse([
'status' => '40002',
'message' => 'Successfully logged in with facebook',
'user' => [
'user_id' => $user->id,
'name' => $user->name,
'email' => $user->email,
'profile_image_url' => $user->profile_image_url,
'token' => $token
]
]);
}
但是,如果用户不存在,即使它将用户保存到数据库中,第一次尝试时也会出现以下错误:
类型错误:传递给Tymon\JWTAuth\JWT::fromUser()的参数1必须
实现接口Tymon\JWTAuth\Contracts\JWTSubject,给定布尔值,
叫来
/var/www/goodzapp.com/api/vendor/illumb/support/Facades/Facade.php
在线221
我做错了什么?谁能给我解释一下吗。任何帮助都将不胜感激