requestFactory = $requestFactory; $this->streamFactory = $streamFactory; $this->clientFactory = $clientFactory ?? new GuzzleClientFactory(); } public function create(UriCollectionInterface $uriCollection, ClientCredentialsInterface $credentials, ?AccessTokenRepositoryInterface $tokenRepository = null): AuthorizationProviderInterface { $authSeverClient = $this->createAuthServerClient($uriCollection); return new AuthorizationProvider( $authSeverClient, new ClientCredentialsGrant(), $credentials, $tokenRepository ); } private function createAuthServerClient(UriCollectionInterface $uriCollection): AuthorizationServerClientInterface { $httpClient = $this->clientFactory->create(); return new AuthorizationServerClient( $httpClient, $this->requestFactory, $this->streamFactory, $uriCollection, new ClientSecretPost() ); } }