с [SIZE=14pt][B]02.06.2020[/B][/SIZE] перестала работать регистрация через вк
[SIZE=14pt][B]Кратко:[/B][/SIZE]
[SIZE=14pt]в файле [COLOR=#00a650]/bitrix/modules/socialservices/classes/general/vkontakte.php[/COLOR][/SIZE]
[SIZE=14pt]Поменяй все "[COLOR=#00a650]5.8[/COLOR]" на "[COLOR=#00a650]5.21[/COLOR]"[/SIZE]
[SIZE=14pt]Разберём само общение с вк:[/SIZE]
По документации вк
[URL=https://vk.com/dev/authcode_flow_user]https://vk.com/dev/authcode_flow_user[/URL]
[B]//для запроса code[/B]
https: //oauth.vk.com/authorize?client_id=7496520& redirect_uri=https%3A%2F%2Fsite.ru%2Fajax%2Flogs%2Flog.php& scope=friends,offline,email&response_type=code
[B]ответ[/B] в redirecturi?code=c189fbeca5542789a4
[B]//Для запроса токена[/B]
https: //oauth.vk.com/access_token?client_id=7496520& client_secret=POwy7hK7rC7XRv71y4cD& redirect_uri=https%3A%2F%2Fsite.ru%2Fajax%2Flogs%2Flog.php&code=c189fbeca5542789a4
[B]Ответ:[/B]
{"access_token":"457c9442a57829","expires_in":0,"user_id":635628,"email":"[URL=mailto:je656565656569@yandex.ru]je656565656569@yandex.ru[/URL]"}
Внимание вопрос: почему это не работает в Битрикс?
[SIZE=14pt]Поиск проблемного места:[/SIZE]
После отказа он меня перекидывал на страницу
/auth/?auth_service_id=VKontakte&auth_service_error=1
Стал искать в папке битрикс строку
[B]auth_service_error
[/B]
нашёл её в файле /bitrix/modules/socialservices/classes/general/vkontakte.php
в условии
elseif ($bSuccess !== true){
$url = (isset($urlPath)) ? $urlPath . '?auth_service_id=' . self::ID . '&auth_service_error='
Сам $bSuccess был равен 1
[SIZE=14pt]Решение:[/SIZE]
в файле /bitrix/modules/socialservices/classes/general/vkontakte.php
Прочитаем, что у нас в $arVkUser
После строки
$arVkUser = $this->entityOAuth->GetCurrentUser();
пропишем мини сохранение логов
$s=print_r($arVkUser, true);
$f=$_SERVER['DOCUMENT_ROOT'].'/h7log.txt';
if(!file_exists($f)){
$fp = fopen($f, "w");
fwrite($fp, date("d.m.Y i:H.s"));
fclose($fp);
}
$t = file_get_contents($f);
$t='['.date("d.m.Y i:H.s").'] '.$s."\n\n\n".$t;
file_put_contents($f, $t);
[B]там нашёл строку ошибки[/B]
[error_msg] => Invalid request: versions below 5.21 are deprecated. Version param should be passed as "v". "version" param is invalid and not supported. For more information go to [URL=https://vk.com/dev/constant_version_updates]https://vk.com/dev/constant_version_updates[/URL]
[B]Что в переводе:[/B]
Неверный запрос:
версии ниже 5.21 устарели.
Параметр "версия" должна быть передана как "v".
Параметр "версия" недействителен и не поддерживается.
Для получения дополнительной информации перейдите по ссылке [URL=https://vk.com/dev/constant_version_updates]https://vk.com/dev/constant_version_updates[/URL].
[B]у Вас может быть другая ошибка.[/B]
Для устранения, в этом же файле нашёл функцию [B]GetCurrentUser([/B]
и в запросе увидел
$result = $h->get(self::CONTACTS_URL . '?[B]v=5.8[/B]&fields=uid,fir...
[B]Поменял v=5.8 на v=5.21[/B]
Убрал мини сохранение логов
[B]В этом же файле ( /bitrix/modules/socialservices/classes/general/vkontakte.php[/B][B] ) поменял все 5.8 на 5.21[/B]
И регистрация и авторизация через вк работает!
Всем удачи)
[COLOR=#ffffff][SIZE=6pt]#450142079[/SIZE][/COLOR]