Laravel socialite 到 google 登录刷新令牌为空

Laravel socialite through google login refresh token is null

我们正在使用一些 google API 函数,所以我们需要 access_token 但是 refresh_token 似乎是空的,即使我在driver。我错过了什么吗?

这是我的代码

    public function redirectToProvider(){
        $scopes = array(
            // 'https://www.googleapis.com/auth/business.manage',
            'https://www.googleapis.com/auth/plus.business.manage'
        );


        return Socialite::driver('google')->scopes($scopes)->with(['access_type'=>'offline'])->redirect();
    }

储蓄部分

public function googleAuthenticate(){
        try {
            $user = Socialite::driver('google')->stateless()->user();
            $existingUser = GoogleUsers::where('email', $user->email)->first();
          
            if($existingUser){
                // dd($user);
                // $token = $user->token;
                // $refreshToken = $user->refreshToken; 
                // $expiresIn = $user->expiresIn;
                dd($user);
                return response()->json('Existing User');
             
            } else {
                $token = $user->token;
                $refreshToken = $user->refreshToken; 
                $expiresIn = $user->expiresIn;
               
                $newUser                  = new GoogleUsers;

                dd($user);

                $newUser->name            = $user->name;
                $newUser->email           = $user->email;
                $newUser->google_id       = $user->id;
                $newUser->created_at      = Carbon::now()->toDateTimeString();
                $newUser->access_token    = $user->token;
                $newUser->refresh_token   = $user->refreshToken;
                $newUser->save();
  
                // return \Redirect::route('home');
                return response()->json($token);
            }
    
            } catch (\Exception $e) {
                return response()->json($e);
        }
    }

当我执行 dd($user) 结果如下

Laravel\Socialite\Two\User {#317 ▼
  +token: "ya29.a0AfH6SMBcFflxhdL2RKY6k0xqIFBHqqPHaJSJPoBV2n79ozewB-9RFnBWqXJITUNyAyZlYKyOYjj0QKDDdNOREbitm13TRp4WvD2tGhCTjpcAStukUND-h59Ga0jIh27ay9JN3BQ3MyfmWwimOqryZsFWwJqy_QfVtE4He5eoVpO2mA ◀"
  +refreshToken: null
  +expiresIn: 3599
  +id: "117177930435384486747"
  +nickname: null
  +name: "Michael koh"
  +email: "user@gmail.com"
  +avatar: "https://lh6.googleusercontent.com/-Jv5Xr7SXjuE/AAAAAAAAAAI/AAAAAAAAAAA/AMZuucmNjvnp4o-Qc4Au8yMTA1XIwjw_cA/photo.jpg"
  +user: array:11 [▶]
  +"avatar_original": "https://lh6.googleusercontent.com/-Jv5Xr7SXjuE/AAAAAAAAAAI/AAAAAAAAAAA/AMZuucmNjvnp4o-Qc4Au8yMTA1XIwjw_cA/photo.jpg"
}

试试这个

 public function redirectToProvider(){
        $scopes = array(
            'https://www.googleapis.com/auth/plus.business.manage'
        );

        $parameters = ['access_type' => 'offline', "prompt" => "consent select_account"];
  
        return Socialite::driver('google')->scopes($scopes)->with($parameters)->redirect();
    }