public function user()
{
if ($this->hasInvalidState()) {
throw new InvalidStateException();
}
$user = $this->mapUserToObject($this->getUserByToken($token = $this->getAccessTokenResponse($this->getCode())));
return $user->setToken(array_get($token, 'access_token'));
}