diff --git a/src/Client/Provider/VKontakteClient.php b/src/Client/Provider/VKontakteClient.php new file mode 100644 index 00000000..66bde58b --- /dev/null +++ b/src/Client/Provider/VKontakteClient.php @@ -0,0 +1,35 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace KnpU\OAuth2ClientBundle\Client\Provider; + +use KnpU\OAuth2ClientBundle\Client\OAuth2Client; +use J4k\OAuth2\Client\Provider\User; +use League\OAuth2\Client\Token\AccessToken; + +class VKontakteClient extends OAuth2Client +{ + /** + * @param AccessToken $accessToken + * @return User + */ + public function fetchUserFromToken(AccessToken $accessToken) + { + return parent::fetchUserFromToken($accessToken); + } + + /** + * @return User + */ + public function fetchUser() + { + return parent::fetchUser(); + } +} diff --git a/src/DependencyInjection/KnpUOAuth2ClientExtension.php b/src/DependencyInjection/KnpUOAuth2ClientExtension.php index c07fd708..7806862c 100644 --- a/src/DependencyInjection/KnpUOAuth2ClientExtension.php +++ b/src/DependencyInjection/KnpUOAuth2ClientExtension.php @@ -20,6 +20,7 @@ use KnpU\OAuth2ClientBundle\DependencyInjection\Providers\InstagramProviderConfigurator; use KnpU\OAuth2ClientBundle\DependencyInjection\Providers\LinkedInProviderConfigurator; use KnpU\OAuth2ClientBundle\DependencyInjection\Providers\ProviderConfiguratorInterface; +use KnpU\OAuth2ClientBundle\DependencyInjection\Providers\VKontakteProviderConfigurator; use Symfony\Component\Config\Definition\Builder\NodeDefinition; use Symfony\Component\Config\Definition\Builder\TreeBuilder; use Symfony\Component\Config\Definition\Exception\InvalidConfigurationException; @@ -47,6 +48,7 @@ class KnpUOAuth2ClientExtension extends Extension 'google' => GoogleProviderConfigurator::class, 'eve_online' => EveOnlineProviderConfigurator::class, 'instagram' => InstagramProviderConfigurator::class, + 'vkontakte' => VKontakteProviderConfigurator::class, 'bitbucket' => BitbucketProviderConfigurator::class, 'generic' => GenericProviderConfigurator::class, ]; diff --git a/src/DependencyInjection/Providers/VKontakteProviderConfigurator.php b/src/DependencyInjection/Providers/VKontakteProviderConfigurator.php new file mode 100644 index 00000000..0c69e96c --- /dev/null +++ b/src/DependencyInjection/Providers/VKontakteProviderConfigurator.php @@ -0,0 +1,54 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace KnpU\OAuth2ClientBundle\DependencyInjection\Providers; + +use Symfony\Component\Config\Definition\Builder\NodeBuilder; + +class VKontakteProviderConfigurator implements ProviderConfiguratorInterface +{ + public function buildConfiguration(NodeBuilder $node) + { + // no custom options + } + + public function getProviderClass(array $config) + { + return 'J4k\OAuth2\Client\Provider\Vkontakte'; + } + + public function getProviderOptions(array $config) + { + return [ + 'clientId' => $config['client_id'], + 'clientSecret' => $config['client_secret'], + ]; + } + + public function getPackagistName() + { + return 'j4k/oauth2-vkontakte'; + } + + public function getLibraryHomepage() + { + return 'https://github.com/j4k/oauth2-vkontakte'; + } + + public function getProviderDisplayName() + { + return 'VKontakte'; + } + + public function getClientClass(array $config) + { + return 'KnpU\OAuth2ClientBundle\Client\Provider\VKontakteClient'; + } +}