生成JWT

时间:2017-10-03 15:41:36

标签: php lumen laravel-socialite

我正在尝试同时使用SocialiteJWT,但我遇到了一些问题。

如果用户已经存在,我的目标是更新数据库中用户的profile_image_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/illuminate/support/Facades/Facade.php   在第221行

我做错了什么?有人可以解释一下。任何帮助将不胜感激。

0 个答案:

没有答案