Тянем фото при авторизации через vkontakte
На текущий момент при авторизации через соцсеть vkontakte не тянется фото пользователя.
Решаем этот недостаток обработчиком в init.php:
Скачать vkapi.class.php можно тут
PS: Скрипт только для Vkontakte и из других соцсетей фото не тянет.
Идея , нужна поддержка!
На текущий момент при авторизации через соцсеть vkontakte не тянется фото пользователя.
Решаем этот недостаток обработчиком в init.php:
AddEventHandler("main", "OnAfterUserAuthorize", Array("CPortalHandlers", "OnAfterUserAuthorizeHandler")); class CPortalHandlers { function OnAfterUserAuthorizeHandler($arFields) { // Достаем фотку с VKontakte if($arFields['user_fields']['EXTERNAL_AUTH_ID']=='VKontakte' && $arFields['user_fields']['XML_ID'] > 0) { // Подключаем api VKontakte include_once dirname(__FILE__).'/vkapi.class.php'; // Указываем ID и KEY приложения // Для получения кодов необходимо зарегистрировать приложение ВКонтакте (тип "Веб-сайт") // http://vkontakte.ru/apps.php?act=add $api_id = 'VVEDITE_SVOY_ID'; // Insert here id of your application $secret_key = 'VVEDITE_SVOY_KEY'; // Insert here secret key of your application $VK = new vkapi($api_id, $secret_key); // Описание api 'getProfiles' тут - http://vk.com/pages.php?o=-1&p=getProfiles // Поля: uid, first_name, last_name, nickname, screen_name, sex, bdate (birthdate), city, country, timezone, photo, photo_medium, photo_big, has_mobile, rate, contacts, education, online, counters $resp = $VK->api('getProfiles', array('uids'=>$arFields['user_fields']['XML_ID'],'fields'=>'photo')); if(is_array($resp['response']) && count($resp['response'])) { $photo = $resp['response'][0]['photo']; if($photo) { // Достаем название файла $name = strtolower(array_pop(explode('/', $photo))); // Скачиваем файл $content = file_get_contents($photo); if($content) { $photo_path = $_SERVER["DOCUMENT_ROOT"].'/upload/tmp/'.$name; // Удаляем файл если есть if(file_exists($photo_path)) unlink($photo_path); if(file_put_contents($photo_path, $content)) { $arIMAGE = CFile::MakeFileArray($photo_path); $arIMAGE["MODULE_ID"] = "main"; // Сохраняем фото $user = new CUser; $arFieldsLoad = Array( "PERSONAL_PHOTO" => $arIMAGE ); $user->Update($arFields['user_fields']['ID'], $arFieldsLoad); // Удаляем временный файл unlink($photo_path); } } } } } } } |
PS: Скрипт только для Vkontakte и из других соцсетей фото не тянет.