From f82c3645e7fbb29c0a9a76d3a10fe7d48f7bd7d5 Mon Sep 17 00:00:00 2001 From: trogwar Date: Thu, 30 Jun 2016 06:55:56 +0300 Subject: [PATCH] Use configuration parameters like scope, version, base URIs to the top of provider and config files --- src/Vkontakte.php | 147 ++++++++++++++++++++++++++++++++++++---------- 1 file changed, 115 insertions(+), 32 deletions(-) diff --git a/src/Vkontakte.php b/src/Vkontakte.php index ada3a48..876d47c 100644 --- a/src/Vkontakte.php +++ b/src/Vkontakte.php @@ -11,15 +11,115 @@ use Psr\Http\Message\ResponseInterface; class Vkontakte extends AbstractProvider { - public $scopes = ['email']; + protected $baseOAuthUri = 'https://oauth.vk.com'; + protected $baseUri = 'https://api.vk.com/method'; + protected $version = '5.52'; + + /** + * @type array + * @see https://vk.com/dev/permissions + */ + public $scopes = [ + 'email', + 'friends', + 'offline', + 'photos', + 'wall', + //'ads', + //'audio', + //'docs', + //'groups', + //'market', + //'messages', + //'nohttps', + //'notes', + //'notifications', + //'notify', + //'pages', + //'stats', + //'status', + //'video', + ]; + /** + * @type array + * @see https://new.vk.com/dev/fields + */ + public $userFields = [ + 'about', + 'bdate', + 'can_post', + 'city', + 'contacts', + 'counters', + 'country', + 'domain', + 'first_name', + 'friend_status', + 'has_mobile', + 'has_photo', + 'home_town', + 'id', + 'is_friend', + 'last_name', + 'maiden_name', + 'nickname', + 'photo_max', + 'photo_max_orig', + 'screen_name', + 'sex', + 'timezone', + //'activities', + //'blacklisted', + //'blacklisted_by_me', + //'books', + //'can_see_all_posts', + //'can_see_audio', + //'can_send_friend_request', + //'can_write_private_message', + //'career', + //'common_count', + //'connections', + //'crop_photo', + //'deactivated', + //'education', + //'exports', + //'followers_count', + //'games', + //'hidden', + //'interests', + //'is_favorite', + //'is_hidden_from_feed', + //'last_seen', + //'military', + //'movies', + //'occupation', + //'online', + //'personal', + //'photo_100', + //'photo_200', + //'photo_200_orig', + //'photo_400_orig', + //'photo_50', + //'photo_id', + //'quotes', + //'relation', + //'relatives', + //'schools', + //'site', + //'status', + //'tv', + //'universities', + //'verified', + //'wall_comments', + ]; public function getBaseAuthorizationUrl() { - return 'https://oauth.vk.com/authorize'; + return "$this->baseOAuthUri/authorize"; } public function getBaseAccessTokenUrl(array $params) { - return 'https://oauth.vk.com/access_token'; + return "$this->baseOAuthUri/access_token"; } public function getAccessToken($grant = 'authorization_code', array $params = []) { @@ -98,35 +198,15 @@ class Vkontakte extends AbstractProvider } public function getResourceOwnerDetailsUrl(AccessToken $token) { - $fields = ['email', - 'nickname', - 'screen_name', - 'sex', - 'bdate', - 'city', - 'country', - 'timezone', - 'photo_50', - 'photo_100', - 'photo_200_orig', - 'has_mobile', - 'contacts', - 'education', - 'online', - 'counters', - 'relation', - 'last_seen', - 'status', - 'can_write_private_message', - 'can_see_all_posts', - 'can_see_audio', - 'can_post', - 'universities', - 'schools', - 'verified', ]; + $params = [ + 'fields' => $this->userFields, + 'access_token' => $token->getToken(), + 'v' => $this->version, + ]; + $query = $this->buildQueryString($params); + $url = "$this->baseUri/users.get?$query"; - return "https://api.vk.com/method/users.get?user_id={$token->uid}&fields=" - .implode(",", $fields)."&access_token={$token}"; + return $url; } protected function createResourceOwner(array $response, AccessToken $token) @@ -156,6 +236,9 @@ class Vkontakte extends AbstractProvider return [$response->first_name, $response->last_name]; } - protected function getDefaultScopes() { return $this->scopes; } + protected function getDefaultScopes() + { + return $this->scopes; + } protected function checkResponse(ResponseInterface $response, $data) { parent::checkResponse($response, $data); } }