We are using some of the google API functions so we need the access_token
but the refresh_token
seems null even I add 'access_type'=>'offline'
in the driver. Did I miss something?
Here is my code
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();
}
The saving part
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);
}
}
When i do a dd($user)
Here is the result
Laravel\Socialite\Two\User {#317 ▼
+token: "ya29.a0AfH6SMBcFflxhdL2RKY6k0xqIFBHqqPHaJSJPoBV2n79ozewB-9RFnBWqXJITUNyAyZlYKyOYjj0QKDDdNOREbitm13TRp4WvD2tGhCTjpcAStukUND-h59Ga0jIh27ay9JN3BQ3MyfmWwimOqryZsFWwJqy_QfVtE4He5eoVpO2mA ◀"
+refreshToken: null
+expiresIn: 3599
+id: "117177930435384486747"
+nickname: null
+name: "Michael koh"
+email: "[email protected]"
+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"
}
try this
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();
}