private function configureProviderAndClient(ContainerBuilder $container, $providerType, $providerKey, $providerClass, $clientClass, $packageName, array $options, $redirectRoute, array $redirectParams, $useState)
{
if ($this->checkExternalClassExistence && !class_exists($providerClass)) {
throw new \LogicException(sprintf('Run `composer require %s` in order to use the "%s" OAuth provider.', $packageName, $providerType));
}
$providerServiceKey = sprintf('knpu.oauth2.provider.%s', $providerKey);
$providerDefinition = $container->register($providerServiceKey, $providerClass);
$providerDefinition->setPublic(false);
$providerDefinition->setFactory([new Reference('knpu.oauth2.provider_factory'), 'createProvider']);
$providerDefinition->setArguments([$providerClass, $options, $redirectRoute, $redirectParams]);
$clientServiceKey = sprintf('knpu.oauth2.client.%s', $providerKey);
$clientDefinition = $container->register($clientServiceKey, $clientClass);
$clientDefinition->setArguments([new Reference($providerServiceKey), new Reference('request_stack')]);
// if stateless, do it!
if (!$useState) {
$clientDefinition->addMethodCall('setAsStateless');
}
return $clientServiceKey;
}