Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 00c4ccc601 | |||
| 792abd4aa9 | |||
| cf02afe845 |
@@ -1,16 +1,16 @@
|
|||||||
# Vkontakte OAuth2 client provider
|
# Vkontakte OAuth2 client provider
|
||||||
This package provides [Vkontakte](https://vk.com) integration for [OAuth2 Client](https://github.com/thephpleague/oauth2-client) by the League.
|
This package provides [VK](https://vk.com) integration for [OAuth2 Client](https://github.com/thephpleague/oauth2-client) by the League.
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
composer require Sept/oauth2-vkontakte
|
composer require 1sept/oauth2-vkontakte
|
||||||
```
|
```
|
||||||
|
|
||||||
## Configuration
|
## Configuration
|
||||||
|
|
||||||
```php
|
```php
|
||||||
$provider = new Sept\OAuth2\Client\Provider\Vkontakte([
|
$provider = new Sept\OAuth2\Client\Provider\VkProvider([
|
||||||
'clientId' => '1234567',
|
'clientId' => '1234567',
|
||||||
'clientSecret' => 's0meRe4lLySEcRetC0De',
|
'clientSecret' => 's0meRe4lLySEcRetC0De',
|
||||||
'redirectUri' => 'https://example.org/oauth-endpoint',
|
'redirectUri' => 'https://example.org/oauth-endpoint',
|
||||||
|
|||||||
@@ -15,10 +15,9 @@ class VkProvider extends AbstractProvider
|
|||||||
protected $language = null;
|
protected $language = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @type array
|
|
||||||
* @see https://vk.com/dev/permissions
|
* @see https://vk.com/dev/permissions
|
||||||
*/
|
*/
|
||||||
public $scopes = [
|
public array $scopes = [
|
||||||
'email',
|
'email',
|
||||||
// 'friends',
|
// 'friends',
|
||||||
// 'offline',
|
// 'offline',
|
||||||
@@ -43,7 +42,7 @@ class VkProvider extends AbstractProvider
|
|||||||
* @type array
|
* @type array
|
||||||
* @see https://new.vk.com/dev/fields
|
* @see https://new.vk.com/dev/fields
|
||||||
*/
|
*/
|
||||||
public $userFields = [
|
public array $userFields = [
|
||||||
'bdate',
|
'bdate',
|
||||||
'city',
|
'city',
|
||||||
'country',
|
'country',
|
||||||
@@ -115,22 +114,24 @@ class VkProvider extends AbstractProvider
|
|||||||
/**
|
/**
|
||||||
* @param string $language
|
* @param string $language
|
||||||
*/
|
*/
|
||||||
public function setLanguage($language)
|
public function setLanguage(string $language): self
|
||||||
{
|
{
|
||||||
$this->language = (string)$language;
|
$this->language = (string)$language;
|
||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getBaseAuthorizationUrl()
|
public function getBaseAuthorizationUrl(): string
|
||||||
{
|
{
|
||||||
return "$this->baseOAuthUri/authorize";
|
return "$this->baseOAuthUri/authorize";
|
||||||
}
|
}
|
||||||
public function getBaseAccessTokenUrl(array $params)
|
|
||||||
|
public function getBaseAccessTokenUrl(array $params): string
|
||||||
{
|
{
|
||||||
return "$this->baseOAuthUri/access_token";
|
return "$this->baseOAuthUri/access_token";
|
||||||
}
|
}
|
||||||
public function getResourceOwnerDetailsUrl(AccessToken $token)
|
|
||||||
|
public function getResourceOwnerDetailsUrl(AccessToken $token): string
|
||||||
{
|
{
|
||||||
$params = [
|
$params = [
|
||||||
'fields' => $this->userFields,
|
'fields' => $this->userFields,
|
||||||
@@ -147,7 +148,7 @@ class VkProvider extends AbstractProvider
|
|||||||
{
|
{
|
||||||
return $this->scopes;
|
return $this->scopes;
|
||||||
}
|
}
|
||||||
protected function checkResponse(ResponseInterface $response, $data)
|
protected function checkResponse(ResponseInterface $response, $data): void
|
||||||
{
|
{
|
||||||
// Metadata info
|
// Metadata info
|
||||||
$contentTypeRaw = $response->getHeader('Content-Type');
|
$contentTypeRaw = $response->getHeader('Content-Type');
|
||||||
@@ -176,7 +177,7 @@ class VkProvider extends AbstractProvider
|
|||||||
throw new IdentityProviderException($errorMessage, $errorCode, $data);
|
throw new IdentityProviderException($errorMessage, $errorCode, $data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
protected function createResourceOwner(array $response, AccessToken $token)
|
protected function createResourceOwner(array $response, AccessToken $token): VkUser
|
||||||
{
|
{
|
||||||
$response = reset($response['response']);
|
$response = reset($response['response']);
|
||||||
$additional = $token->getValues();
|
$additional = $token->getValues();
|
||||||
@@ -202,7 +203,7 @@ class VkProvider extends AbstractProvider
|
|||||||
*
|
*
|
||||||
* @return User[]
|
* @return User[]
|
||||||
*/
|
*/
|
||||||
public function usersGet(array $ids = [], AccessToken $token = null, array $params = [])
|
public function usersGet(array $ids = [], AccessToken $token = null, array $params = []): array
|
||||||
{
|
{
|
||||||
if (empty($ids) && !$token) {
|
if (empty($ids) && !$token) {
|
||||||
throw new \InvalidArgumentException('Some of parameters usersIds OR access_token are required');
|
throw new \InvalidArgumentException('Some of parameters usersIds OR access_token are required');
|
||||||
@@ -236,7 +237,7 @@ class VkProvider extends AbstractProvider
|
|||||||
*
|
*
|
||||||
* @return User[]
|
* @return User[]
|
||||||
*/
|
*/
|
||||||
public function friendsGet($userId, AccessToken $token = null, array $params = [])
|
public function friendsGet($userId, AccessToken $token = null, array $params = []): array
|
||||||
{
|
{
|
||||||
$default = [
|
$default = [
|
||||||
'user_id' => $userId,
|
'user_id' => $userId,
|
||||||
|
|||||||
110
src/VkUser.php
110
src/VkUser.php
@@ -6,8 +6,6 @@ use League\OAuth2\Client\Provider\ResourceOwnerInterface;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @see https://vk.com/dev/fields
|
* @see https://vk.com/dev/fields
|
||||||
*
|
|
||||||
* @package Sept\OAuth2\Client\Provider
|
|
||||||
*/
|
*/
|
||||||
class VkUser implements ResourceOwnerInterface
|
class VkUser implements ResourceOwnerInterface
|
||||||
{
|
{
|
||||||
@@ -18,36 +16,26 @@ class VkUser implements ResourceOwnerInterface
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* User constructor.
|
* User constructor.
|
||||||
*
|
|
||||||
* @param array $response
|
|
||||||
*/
|
*/
|
||||||
public function __construct(array $response)
|
public function __construct(array $response)
|
||||||
{
|
{
|
||||||
$this->response = $response;
|
$this->response = $response;
|
||||||
}
|
}
|
||||||
/**
|
|
||||||
* @return array
|
public function toArray(): array
|
||||||
*/
|
|
||||||
public function toArray()
|
|
||||||
{
|
{
|
||||||
return $this->response;
|
return $this->response;
|
||||||
}
|
}
|
||||||
/**
|
|
||||||
* @return integer
|
public function getId(): int
|
||||||
*/
|
|
||||||
public function getId()
|
|
||||||
{
|
{
|
||||||
return (int)($this->getField('uid') ?: $this->getField('id'));
|
return (int)($this->getField('uid') ?: $this->getField('id'));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Helper for getting user data
|
* Helper for getting user data
|
||||||
*
|
|
||||||
* @param string $key
|
|
||||||
*
|
|
||||||
* @return mixed|null
|
|
||||||
*/
|
*/
|
||||||
protected function getField($key)
|
protected function getField(string $key): mixed
|
||||||
{
|
{
|
||||||
return !empty($this->response[$key]) ? $this->response[$key] : null;
|
return !empty($this->response[$key]) ? $this->response[$key] : null;
|
||||||
}
|
}
|
||||||
@@ -55,132 +43,108 @@ class VkUser implements ResourceOwnerInterface
|
|||||||
/**
|
/**
|
||||||
* @return string|null DD.MM.YYYY
|
* @return string|null DD.MM.YYYY
|
||||||
*/
|
*/
|
||||||
public function getBirthday()
|
public function getBirthday():string
|
||||||
{
|
{
|
||||||
return $this->getField('bdate');
|
return $this->getField('bdate');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return array [id =>, title => string]
|
* @return array [id =>, title => string]
|
||||||
*/
|
*/
|
||||||
public function getCity()
|
public function getCity(): array
|
||||||
{
|
{
|
||||||
return $this->getField('city');
|
return $this->getField('city');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return array [id =>, title => string]
|
* @return array [id =>, title => string]
|
||||||
*/
|
*/
|
||||||
public function getCountry()
|
public function getCountry(): array
|
||||||
{
|
{
|
||||||
return $this->getField('country');
|
return $this->getField('country');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Short address to user page
|
* Short address to user page
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function getDomain()
|
public function getDomain(): string
|
||||||
{
|
{
|
||||||
return $this->getField('domain');
|
return $this->getField('domain');
|
||||||
}
|
}
|
||||||
/**
|
|
||||||
* @return string
|
public function getFirstName(): string
|
||||||
*/
|
|
||||||
public function getFirstName()
|
|
||||||
{
|
{
|
||||||
return $this->getField('first_name');
|
return $this->getField('first_name');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return int 0|1|2|3 => nobody|resquest_sent|incoming_request|friends
|
* @return int 0|1|2|3 => nobody|resquest_sent|incoming_request|friends
|
||||||
*/
|
*/
|
||||||
public function getFriendStatus()
|
public function getFriendStatus(): int
|
||||||
{
|
{
|
||||||
return $this->getField('friend_Status');
|
return $this->getField('friend_Status');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Has user avatar?
|
* Has user avatar?
|
||||||
*
|
|
||||||
* @return bool
|
|
||||||
*/
|
*/
|
||||||
public function isHasPhoto()
|
public function isHasPhoto(): bool
|
||||||
{
|
{
|
||||||
return (bool)$this->getField('has_photo');
|
return (bool)$this->getField('has_photo');
|
||||||
}
|
}
|
||||||
/**
|
|
||||||
* @return string
|
public function getHomeTown(): string
|
||||||
*/
|
|
||||||
public function getHomeTown()
|
|
||||||
{
|
{
|
||||||
return $this->getField('home_town');
|
return $this->getField('home_town');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Detect if current user is freind to this
|
* Detect if current user is freind to this
|
||||||
*
|
|
||||||
* @return bool
|
|
||||||
*/
|
*/
|
||||||
public function isFriend()
|
public function isFriend(): bool
|
||||||
{
|
{
|
||||||
return (bool)$this->getField('is_friend');
|
return (bool)$this->getField('is_friend');
|
||||||
}
|
}
|
||||||
/**
|
|
||||||
* @return string
|
public function getLastName(): string
|
||||||
*/
|
|
||||||
public function getLastName()
|
|
||||||
{
|
{
|
||||||
return $this->getField('last_name');
|
return $this->getField('last_name');
|
||||||
}
|
}
|
||||||
/**
|
|
||||||
* @return string
|
public function getMaidenName(): string
|
||||||
*/
|
|
||||||
public function getMaidenName()
|
|
||||||
{
|
{
|
||||||
return $this->getField('maiden_name');
|
return $this->getField('maiden_name');
|
||||||
}
|
}
|
||||||
/**
|
|
||||||
* @return string
|
public function getNickname(): string
|
||||||
*/
|
|
||||||
public function getNickname()
|
|
||||||
{
|
{
|
||||||
return $this->getField('nickname');
|
return $this->getField('nickname');
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* It's square!
|
* It's square!
|
||||||
*
|
|
||||||
* @return string URL
|
|
||||||
*/
|
*/
|
||||||
public function getPhotoMax()
|
public function getPhotoMax():string
|
||||||
{
|
{
|
||||||
return $this->getField('photo_max');
|
return $this->getField('photo_max');
|
||||||
}
|
}
|
||||||
/**
|
|
||||||
* Any sizes
|
public function getPhotoMaxOrig(): string
|
||||||
*
|
|
||||||
* @return string URL
|
|
||||||
*/
|
|
||||||
public function getPhotoMaxOrig()
|
|
||||||
{
|
{
|
||||||
return $this->getField('photo_max_orig');
|
return $this->getField('photo_max_orig');
|
||||||
}
|
}
|
||||||
/**
|
|
||||||
* @return string
|
public function getScreenName(): string
|
||||||
*/
|
|
||||||
public function getScreenName()
|
|
||||||
{
|
{
|
||||||
return $this->getField('screen_name');
|
return $this->getField('screen_name');
|
||||||
}
|
}
|
||||||
/**
|
|
||||||
* @return int 1|2 => woman|man
|
public function getSex(): int
|
||||||
*/
|
|
||||||
public function getSex()
|
|
||||||
{
|
{
|
||||||
return $this->getField('sex');
|
return $this->getField('sex');
|
||||||
}
|
}
|
||||||
/**
|
|
||||||
* @return string
|
public function getEmail(): string
|
||||||
*/
|
|
||||||
public function getEmail()
|
|
||||||
{
|
{
|
||||||
return $this->getField('email');
|
return $this->getField('email');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
namespace Sept\OAuth2\Client\Test\Provider;
|
namespace Sept\OAuth2\Client\Test\Provider;
|
||||||
|
|
||||||
use GuzzleHttp\Psr7\Response;
|
use GuzzleHttp\Psr7\Response;
|
||||||
use Sept\OAuth2\Client\Provider\Vkontakte as Provider;
|
use Sept\OAuth2\Client\Provider\VkProvider as Provider;
|
||||||
use League\OAuth2\Client\Provider\Exception\IdentityProviderException;
|
use League\OAuth2\Client\Provider\Exception\IdentityProviderException;
|
||||||
use League\OAuth2\Client\Token\AccessToken;
|
use League\OAuth2\Client\Token\AccessToken;
|
||||||
use Mockery as m;
|
use Mockery as m;
|
||||||
|
|||||||
Reference in New Issue
Block a user