options['baseAuthorizationUrl']; } public function getBaseAccessTokenUrl(array $params): string { return $this->options['baseAccessTokenUrl']; } public function getResourceOwnerDetailsUrl(AccessToken $token): string { return $this->options['resourceOwnerDetailsUrl']; } protected function getDefaultScopes(): array { return explode(',', $this->options['scope']); } protected function checkResponse(ResponseInterface $response, $data): void { if ($response->getStatusCode() >= 400) { throw new IdentityProviderException($data['error'] ?? 'Unknown error', $response->getStatusCode(), $response); } } protected function createResourceOwner(array $response, AccessToken $token): ResourceOwnerInterface { return new OAuthResourceOwner($response); } }