Тянем фото при авторизации через 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 и из других соцсетей фото не тянет.
, нужна поддержка!