Размещение поста ВКОНТАКТЕ из Битрикс
План работы:
1. Создание Standalone-приложения во Вконтакте и его настройка
- Переходим по ссылке – http://vk.com/developers.php и выбираем “Создать приложение”.
- В следующем окне вводим любое название приложение и выбираем тип “Standalone-приложение”.
- Запрашиваем код, после чего на мобильный приходит смс, вводим его там же и попадаем на страницу настройки приложения.
- Переходим на закладку “Настройки”. Здесь заполняем поля “Адрес сайта” и “Базовый домен” на те откуда будем постить. Open API - "включен". Здесь же обращаем внимание на поля “ID приложения” и “Защищенный ключ” они понадобятся далее.
2. Открытие диалога авторизации OAuth и разрешение прав доступа приложению
- В браузере открываем следующий url https://oauth.vk.com/authorize?client_id=xxxxxxx&scope=offline,wall,groups,photos&redirect_uri=http://api.vkontakte.ru/blank.html&response_type=code где client_id значение “ID приложения” из пункта 1.4, scope - перечисляет права доступа.
- Откроется окно разрешение прав доступа приложению (авторизация). Необходимо нажать “Разрешить”.
3. Получение code
- После успешной авторизации Вас должно перенаправить на url: http://api.vkontakte.ru/blank.html#code=xxxxxxxxxxxxxxxx. Запоминаем значение параметра code он понадобится ниже.
4. Получение access_token
- Подставляем значение параметра code из предыдущего шага, client_id и client_secret берем из пункта 1.4. и переходим по сформированной ссылке. https://oauth.vk.com/access_token?client_id=xxxxxxx&client_secret=xxxxxxxxxxxxxxxxx&code=xxxxxxxxxxxx&redirect_uri=http://api.vkontakte.ru/blank.html
- Видим ответ от сервера и в нем access_token:{“access_token”:”xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx”,”expires_in”:0,”user_id”:xxxxxxxx}
И сам код для постинга в группу Вконтакте:
<? //1. ВХОДНЫЕ ДАННЫЕ CModule::IncludeModule("iblock"); $res = CIBlockElement::GetByID($arParams["ID"]);//получаем элемент, который постим $ar_res = $res->GetNext(); $access_token = "#################################################################";//ранее полученный токен $group_id = #######;//ID группы ВКОНТАКТЕ $text = $ar_res['NAME']; $text = urlencode(iconv('windows-1251', 'UTF-8', $text));//изменение кодировки сообщения в случае необходимости $link = SITE_SERVER_NAME.$ar_res['DETAIL_PAGE_URL']; $link = urlencode($link); if(intval($ar_res["DETAIL_PICTURE"])>0) $photoPath = CFile::GetPath($ar_res["DETAIL_PICTURE"]); elseif(intval($ar_res["PREVIEW_PICTURE"])>0) $photoPath = CFile::GetPath($ar_res["PREVIEW_PICTURE"]); //2. УЗНАЕМ СЕРВЕР ДЛЯ КАРТИНКИ $url1 = 'https://api.vkontakte.ru/method/photos.getWallUploadServer?owner_id='.$group_id.'&access_token='.$access_token; $oServer = json_decode(file_get_contents($url1)); //3. ОТПРАВКА POST КАРТИНКИ НА СЕРВЕР ВКОНТАКТЕ $data = array("photo"=>"@".$_SERVER['DOCUMENT_ROOT'].$photoPath); $ch = curl_init(); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($ch, CURLOPT_TIMEOUT, 10); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_URL, $oServer->response->upload_url); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); $response = curl_exec($ch); $response = json_decode($response); curl_close($ch); //4. СОХРАНЕНИЕ ФОТО ВКОНТАКТЕ $url2 = 'https://api.vkontakte.ru/method/photos.saveWallPhoto?server='.$response->server.'&photo='.$response->photo.'&hash='.$response->hash.'&access_token='.$access_token; $oUrl2 = json_decode(file_get_contents($url2)); $photoID = $oUrl2->response[0]->id; echo '
photoID = '.$photoID; //5. РАЗМЕЩАЕМ ПОСТ В ГРУППЕ ВКОНТАКТЕ $url3 = 'https://api.vkontakte.ru/method/wall.post?owner_id=-'.$group_id.'&attachments='.$photoID.','.$link.'&from_group=1&access_token='.$access_token;//Готовим url для поста. if(strlen($text)>0) $url3 .='&message='.$text;//Если есть сообщение, то добавляем его. $oUrl3 = json_decode(file_get_contents($url3)); ?>
Если нужно разместить текст без картинки, то пропускаем пункты 2-4 и в строке 35 убираем упоминание о картинке (photoID).
Оставить комментарий