Jump to content
Дизайн и модификация IPS Community IPBSkinsBETA
Search In
  • More options...
Find results that contain...
Find results in...
Sign in to follow this  
siv1987

Плагин авторизации через VK для IPS 4.x

Recommended Posts

Вставил в параметр User Information Endpoint такую ссылку https://api.vk.com/method/users.get?fields=screen_name&v=5.101

результат тот же ошибка только изменилась

Array
(
   [response] => Array
       (
           [0] => Array
               (
                   [id] => **
                   [first_name] => ****
                   [last_name] => *******
                   [is_closed] => 1
                   [can_access_closed] => 1
                   [screen_name] => id****
               )

       )

)
#0 N:\OSPanel\domains\ipb43.ru\forum\system\Login\Handler\OAuth2\Custom.php(449): IPS\_Log::log('Array\n(\n    [re...', 'oauth_custom')
#1 N:\OSPanel\domains\ipb43.ru\forum\system\Login\Handler\OAuth2\Custom.php(294): IPS\Login\Handler\OAuth2\_Custom->_userData('17489e6ac564078...', 'response[0][uid...')
#2 N:\OSPanel\domains\ipb43.ru\forum\system\Login\Handler\OAuth2\OAuth2.php(384): IPS\Login\Handler\OAuth2\_Custom->authenticatedUserId('17489e6ac564078...')
#3 N:\OSPanel\domains\ipb43.ru\forum\system\Login\Handler\OAuth2\OAuth2.php(368): IPS\Login\Handler\_OAuth2->_processAccessToken(Object(IPS\Login), Array)
#4 N:\OSPanel\domains\ipb43.ru\forum\system\Login\Handler\OAuth2\OAuth2.php(164): IPS\Login\Handler\_OAuth2->_handleAuthorizationResponse(Object(IPS\Login))
#5 N:\OSPanel\domains\ipb43.ru\forum\system\Login\Login.php(316): IPS\Login\Handler\_OAuth2->authenticateButton(Object(IPS\Login))
#6 N:\OSPanel\domains\ipb43.ru\forum\applications\core\modules\front\system\login.php(57): IPS\_Login->authenticate()
#7 N:\OSPanel\domains\ipb43.ru\forum\system\Dispatcher\Controller.php(96): IPS\core\modules\front\system\_login->manage()
#8 N:\OSPanel\domains\ipb43.ru\forum\system\Dispatcher\Dispatcher.php(152): IPS\Dispatcher\_Controller->execute()
#9 N:\OSPanel\domains\ipb43.ru\forum\index.php(13): IPS\_Dispatcher->run()
#10 {main}

Share this post


Link to post

результат тот же ошибка только изменилась

Смотрите внимательно, какие данные приходят и настройки

[id] => **
[first_name] => ****
[last_name] => *******
[is_closed] => 1
[can_access_closed] => 1
[screen_name] => id****

- User ID Parameter. У Вас uid, а возвращается id. Меняете на id.

- Display Name Parameter. Здесь есть данные

- Profile Photo URL Parameter. У Вас photo_medium, а в результате нет такого поля. Поэтому надо добавить нужные поля в https://api.vk.com/method/users.get?fields=screen_name&v=5.101

 

Здесь нет photo_medium. Выбираете из того, что есть в нынешней версии.

Share this post


Link to post

немного под разобрался вроде работает, но screen_name в логине не очень использовать, то есть просто получается id777899 например заменил на response[0][first_name] но тут получается довольно много совпадений с уже зарегистрированными, что такое имя уже есть. Можно как то совместно использовать с last_name?? попробовал так response[0][first_name last_name] не работает так response[0][first_name] response[0][last_name] тоже нет.

Так же вопрос про email можно его выдернуть из vk?? вроде готовые приложения это делают но нут не нашёл как сделать((

 

Так же не хочет синхронизировать старые аккаунты выдает "Your VK account is already associated with another member." в логах не каких ошибок нет при этом

Edited by avgaz

Share this post


Link to post

Можно как то совместно использовать с last_name?? попробовал так response[0][first_name last_name] не работает так response[0][first_name] response[0][last_name] тоже нет.

Нужно изменить метод authenticatedUserName (system/Login/Handler/OAuth2/Custom.php)

Например, так

	protected function authenticatedUserName( $accessToken )
{
	if ( $this->id == 12345 )
	{
		if ( isset( $this->settings['name_field'] ) and $this->settings['name_field'] )
		{
			$data = $this->_userData( $accessToken );

			return $data['response'][0]['first_name'] . ' ' . $data['response'][0]['last_name'];
		}			
	}

	if ( isset( $this->settings['name_field'] ) and $this->settings['name_field'] and $username = static::getValueFromArray( $this->_userData( $accessToken, $this->settings['name_field'] ), $this->settings['name_field'] ) )
	{
		return $username;
	}

	return NULL;
}

12345 - ID хендлера

 

Так же вопрос про email можно его выдернуть из vk?? вроде готовые приложения это делают но нут не нашёл как сделать((

email приходит в ответе только при авторизации, если указан email в scope

При получении информации о юзере, email'а нет.

 

Так же не хочет синхронизировать старые аккаунты выдает "Your VK account is already associated with another member." в логах не каких ошибок нет при этом

 

А какие ошибки должны быть?

Аккаунт юзера уже прилинкован к VK'шному. Может от старых версий осталось.

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...