Перейти к публикации
Дизайн и модификация IPS Community IPBSkinsBETA
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
siv1987

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

Рекомендованные сообщения

Вставил в параметр 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}

Поделиться сообщением


Ссылка на сообщение

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

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

[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. Выбираете из того, что есть в нынешней версии.

Поделиться сообщением


Ссылка на сообщение
08/21/19 15:08 (изменено)

немного под разобрался вроде работает, но 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." в логах не каких ошибок нет при этом

Изменено пользователем avgaz

Поделиться сообщением


Ссылка на сообщение

Можно как то совместно использовать с 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'шному. Может от старых версий осталось.

Поделиться сообщением


Ссылка на сообщение

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×
×
  • Создать...