Update docs, bump PHP

This commit is contained in:
trogwar
2016-06-30 08:23:49 +03:00
committed by Jack Wall
parent 887aed2956
commit 8f7813faf3
4 changed files with 296 additions and 62 deletions

View File

@@ -12,16 +12,76 @@ This package provides [Vkontakte](https://vk.com) integration for [OAuth2 Client
composer require j4k/oauth2-vkontakte
```
## Usage
## Configuration
```php
$provider = new J4k\OAuth2\Client\Provider\Vkontakte([
'clientId' => '1234567',
'clientId' => '1234567',
'clientSecret' => 's0meRe4lLySEcRetC0De',
'redirectUri' => 'https://example.org/oauth-endpoint',
'redirectUri' => 'https://example.org/oauth-endpoint',
'scopes' => ['email', 'offline', 'friends'],
]);
```
## Authorization
```php
// Authorize if needed
if (PHP_SESSION_NONE === session_status()) session_start();
$isSessionActive = PHP_SESSION_ACTIVE === session_status();
$code = !empty($_GET['code']) ? $_GET['code'] : null;
$state = !empty($_GET['state']) ? $_GET['state'] : null;
$sessionState = 'oauth2state';
// No code get some
if (!$code) {
$authUrl = $provider->getAuthorizationUrl();
if ($isSessionActive) $_SESSION[$sessionState] = $provider->getState();
// Redirect user to VK
header("Location: $authUrl");
die();
}
// Anti-CSRF
elseif ($isSessionActive && (empty($state) || ($state !== $_SESSION[$sessionState]))) {
unset($_SESSION[$sessionState]);
throw new \RuntimeException('Invalid state');
}
// Exchange code to access_token
else {
try {
$providerAccessToken = $provider->getAccessToken('authorization_code', ['code' => $code]);
// Yay, got it!
var_dump([
'access_token' => $providerAccessToken->getAccessToken(),
'expires' => $providerAccessToken->getExpires(),
'user_id' => $providerAccessToken->getValues()['user_id'],
'email' => $providerAccessToken->getValues()['email'], // Only for "email" scope
]);
}
catch (IdentityProviderException $e) {
// Log error
error_log($e->getMessage());
}
}
```
## Helper methods
### Public
```php
$provider->usersGet([1234, 56789]); // => \J4k\OAuth2\Client\Provider\User[]
$provider->friendsGet(23456); // => \J4k\OAuth2\Client\Provider\User[]
```
### With additional data
```php
$providerAccessToken = new \League\OAuth2\Client\Token\AccessToken(['access_token' => 'iAmAccessTokenString']);
$provider->usersGet([1234, 56789], $providerAccessToken); // => \J4k\OAuth2\Client\Provider\User[]
$provider->friendsGet(23456, $providerAccessToken); // => \J4k\OAuth2\Client\Provider\User[]
```
## Contributions
Contributions are very welcome. Please submit a PR