Демонстрационная конфигурация работы с API ВКонтакте

01.04.20

Интеграция - WEB-интеграция

В статье представлен обзор работы с API ВКонтакте из 1С. А так же рассматривается демонстрационная конфигурация по работе с API.

Скачать файлы

Наименование Файл Версия Размер
Демонстрационная конфигурация работы с API ВКонтакте
.cf 47,57Kb
271
.cf 47,57Kb 271 Скачать

Создание приложения "ВКонтакте".

Прежде чем приступить к работае с API необходимо создать приложение, от имени которого будут выполняться все действия (размещение записей и фотографий на стене, добавление и чтение комментариев, чтение данных пользователя и т.п).

Для создания приложения необходимо перейти по этой ссылке: https://vk.com/editapp?act=create

На станице создания приложения необходимо ввести название вашего приложения и выбрать тип "Standalone-приложение".

Для подтверждения действия необходимо получить на мобильный телефон сообщение с кодом.

В результате будет создано приложение. Смысл всех этих действий в получении ID приложения, которое и будет использоваться в запросах к API.

Авторизация на сайте ВКонтакте.

Перед работой с API необходимо авторизироваться. ВКонтакте используется способ авторизации OAuth 2.0.

Если в кратце и попростому, то необходимо открыть браузер, перейти по определнному адресу на странице, на которой необходимо ввести данные пользователя. После успешной авторизации возвращается access_token. Его и нужно сохранить, так как он будет использоваться в запросах.

Более подробную информацию можно посмотреть здесь: http://vk.com/dev/auth_mobile

Я же опишу как все это можно реализовать на 1С.

Необходимо создать обработку для авторизации. На форму вывести поле HTML документа (элемент формы ПолеHTMLДокумента). При открытии формы переходить по адресу

https://oauth.vk.com/authorize?client_id=&scope=&redirect_uri=http://api.vk.com/blank.html&display=page&response_type=token

Ниже приведен пример кода. Переход на страницу вставлен в процедуру "ПриОткрытии()"

Процедура ПриОткрытии()
	
	ЭлементыФормы.ПолеHTMLДокумента1.Перейти("https://oauth.vk.com/authorize?client_id=12345" +
		"&scope=photos,wall,offline&redirect_uri=http://api.vk.com/blank.html&" +
		"display=page&response_type=token");
	
КонецПроцедуры

Со списком прав доступа можно ознакомиться на этой странице: http://vk.com/dev/permissions

Единственное, что можно упомянуть - это то, что если вы не хотите постоянно авторизироваться (по умолчанию access_token действует сутки, после чего его необходимо вновь получать), используйте параметр доступа offline. В таком случае срок действия access_token будет неограничен и авторизация потребуется только один раз.

После того, как пользователь верно введен пароль и разрешит приложению использовать необходимые данные будет произведен переход по адресу типа http://api.vk.com/blank.html#access_token=a1dfc7ef2b763d776350375f8a22678a59f28e1ac7e090b4a8486274564d38e9e8a069d10e596223d80d7&expires_in=0&user_id=5184504. Остается отследить такой переход и извлеч из строки адреса необходимую информацию (обымно требуется только access_token).

Для этого необходимо обрабатывать событие "ДокументСформирован" элемента "ПолеHTMLДокумента".

Ниже приведен пример обработки данного события.

Процедура ПолеHTMLДокумента1ДокументСформирован(Элемент)
	
	access_token = "";
	
	Если Элемент.Документ.location.host = "api.vk.com" Тогда
		hash = Сред(Элемент.Документ.location.hash, 2);
		МассивСтрок = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(hash, "&");
		
		Для каждого Параметр ИЗ МассивСтрок Цикл
			
			ИмяПараметра = "";
			ЗначениеПараметра = "";
			
			Поз = Найти(Параметр, "=");
			Если Поз = 0 Тогда
				ИмяПараметра = Параметр;
				ЗначениеПараметра = "";
			Иначе
				ИмяПараметра = НРег(СокрЛП(Лев(Параметр,Поз-1)));
				ЗначениеПараметра = СокрЛП(Сред(Параметр, Поз+1));
			КонецЕсли;
			
			Если ИмяПараметра = "access_token" Тогда
				access_token = ЗначениеПараметра;
			КонецЕсли;
			
		КонецЦикла;
		
		Константы.access_token = access_token;
		
		Закрыть();
	КонецЕсли;
	
КонецФункции

Отправка запросов к API ВКонтакте.

После того, как получен access_token можно выполнять запросы к API.

Для этого производится GET запрос по определенному адресу и читается ответ. Общий вид HTTP адреса выглядит следующим образом:

https://api.vk.com/method/ИМЯ_МЕТОДА.xml?параметр1=значение1&параметрN=значениеN&access_token=a1dfc7ef2b763d776350375f8a22678a59f28e1ac7e090b4a8486274564d38e9e8a069d10e596223d80d7

Например, для размещения записи "Привет, ВКонтакт!" на стене пользователя http://vk.com/id5184504 будет такой адрес:

https://api.vk.com/method/wall.post.xml?owner_id=5184504&message=Привет, ВКонтакт!&access_token=a1dfc7ef2b763d776350375f8a22678a59f28e1ac7e090b4a8486274564d38e9e8a069d10e596223d80d7

Примечание. Если необходимо произвести действие со стеной группы, то в owner_id устанавливается значение со знаком "-".

Ниже приведен код процедуры, выполняющий запросы к API (следует заметить что используется HTTPS соединение).

Процедура ВызватьМетодAPI(ИмяМетода, Параметры, access_token) Экспорт
	
	ИмяВыходногоФайла = ПолучитьИмяВременногоФайла("xml");
	
	Соединение = Новый HTTPСоединение("api.vk.com",,,,, Истина);
	
	Соединение.Получить("method/" + ИмяМетода + ".xml?" +
				?(ТипЗнч(Параметры) = Тип("Строка"), Параметры + ?(ЗначениеЗаполнено(Параметры), "&", "") + "access_token="+access_token,
				СформироватьСтрокуПараметровЗапроса(Параметры, access_token)),
				ИмяВыходногоФайла);
	
КонецПроцедуры

Описание всех методов вы можете найти на странице для разработчиков ВКонтакте: http://vk.com/dev/methods

Отправка фотографий.

Как производить отправку фотографий можно прочитать в документации ВКонтакте (или посмотреть в демонстационной конфигурации). В этой статье я хочу остановиться лишь на одном моменте.

Изображение отправляется методом POST. Отправляемый файл имеет следующую структуру:

--0123456789
Content-Disposition: form-data; name="photo"; filename="image.jpg"
Content-Type: image/jpeg




--0123456789

 

где 0123456789 - Boundary: некая последовательность символов. Так же необходимо установить HTTP заголовки Content-Type и Content-Length.

Так как в 1С нет методов для работы с двоичными файлами был придуман следующий способ. Формируются 2 текстовый файла: с началом конченого файла:

--0123456789
Content-Disposition: form-data; name="photo"; filename="image.jpg"
Content-Type: image/jpeg

и окончанием

 

--0123456789

Итого получается 3 файла:

1. текстовый файл с началом
2. само изображение
3. текстовый файл с окончанием

Используя метод "ОбъединитьФайлы" соединяем 3 файла в один и отправляем уже полученный файл.

Ниже приведен код демонстирующий отправку файла. 

ИмяВходногоФайла = ПолучитьИмяВременногоФайла("in");
ИмяВходногоФайла1 = ПолучитьИмяВременногоФайла("in1");
ИмяВходногоФайла2 = ПолучитьИмяВременногоФайла("in2");
ИмяВходногоФайла3 = ПолучитьИмяВременногоФайла("in2");
ИмяВыходногоФайла = ПолучитьИмяВременногоФайла("out");

Boundary = СтрЗаменить(Строка(Новый УникальныйИдентификатор()), "-", "");

ВходнойФайл = Новый ЗаписьТекста(ИмяВходногоФайла1, КодировкаТекста.ANSI, Символы.ПС);
ВходнойФайл.ЗаписатьСтроку("--"+Boundary);
ВходнойФайл.ЗаписатьСтроку("Content-Disposition: form-data; name=""photo""; filename=""image.jpg""");
ВходнойФайл.ЗаписатьСтроку("Content-Type: image/jpeg");
ВходнойФайл.ЗаписатьСтроку("");
ВходнойФайл.Закрыть();

Изображение.Записать(ИмяВходногоФайла2);

ВходнойФайл = Новый ЗаписьТекста(ИмяВходногоФайла3, КодировкаТекста.ANSI, Символы.ПС);
ВходнойФайл.ЗаписатьСтроку("");
ВходнойФайл.ЗаписатьСтроку("--"+Boundary);
ВходнойФайл.Закрыть();

МассивФайлов = Новый Массив;
МассивФайлов.Добавить(ИмяВходногоФайла1);
МассивФайлов.Добавить(ИмяВходногоФайла2);
МассивФайлов.Добавить(ИмяВходногоФайла3);

ОбъединитьФайлы(МассивФайлов, ИмяВходногоФайла);

ФайлОтправки = Новый Файл(ИмяВходногоФайла);
РазмерФайлаОтправки = XMLСтрока(ФайлОтправки.Размер());

ЗаголовокHTTP = Новый Соответствие;
ЗаголовокHTTP.Вставить("Content-Type", "multipart/form-data; boundary="+Boundary);
ЗаголовокHTTP.Вставить("Content-Length", РазмерФайлаОтправки);

Соединение = Новый HTTPСоединение(АдресЗагрузки);
Соединение.ОтправитьДляОбработки(ИмяВходногоФайла, АдресРесурса, ИмяВыходногоФайла, ЗаголовокHTTP);

Прикрепление карты к сообщению на стене.

В текущей реализации API отсутствует возможность прикрепления карты к сообщению. Что бывает не очень удобно. Например, если в сообщении идет речь о какой-нибудь проводимой акции, то хорошо бы было к нему прикрепить карту с местом проведения акции. Данная задача была решена мной следующим образом: обращением к Google Maps API получается изображение карты, а потом оно прикрепляется к сообщению как обычная картина.

Для того, чтобы получить изображение карты с нужным местом необходимо отправить запрос по адресу

http://maps.google.com/maps/api/staticmap?center=LAT,LONG&zoom=14&size=320x100&maptype=roadmap&markers=color:red%7Ccolor:red%7Clabel:C%7CLAT,LONG&sensor=false

где LAT и LONG географические координаты места. Описание остальных параметров можно найти в описании Google Maps API. Скажу лишь, что приведенные в данном примере по моему мнению являются оптимальными и их можно не менять. В ответ приходит изображение карты.

Ниже приведен пример использования.

// после выполнения вызова в этом файле будет изображение с картой
ИмяФайлаКарты = ПолучитьИмяВременногоФайла("jpg");

Соединение = Новый HTTPСоединение("maps.google.com");
Соединение.Получить("maps/api/staticmap?center="+lat+","+long+"&zoom=14&size=320x100&maptype=roadmap" +
    "&markers=color:red%7Ccolor:red%7Clabel:C%7C"+lat+","+long+"&sensor=false", ИмяФайлаКарты);

 

Демонстрационная конфигурация.

Обновлено 01.04.2020. Актуальная версия демонстрационной конфигурации, содержащая новую библиотеку интеграции с ВК находится по адресу //infostart.ru/public/1217822/

Для демонстрации работы с API и более лучшего понимания всего вышесказанного была создана демонстрационная конфигурация. В этой конфигурации реализован механизм авторизации и отправка сообщения на стену с возможностью прикрепления изображения. Кроме того, в конфигурации существует общий модуль "РаботаССайтомВКонтакте" в котором реализованы готовые вызовы следующих методов API в виде соответсвующих процедур и функций 1С:

  • размещение и удаление записей на стене;
  • добавление, чтение и удаление комментариев к записям;
  • работа с рекламой - получение списка рекламных кабинетов, работа с рекламными кампаниями и рекламными объявлениями (создание, изменение и удаление);
  • работа со списком пользоваталей и получение информации о них;
  • работа с географическими местами;
  • размещение фотографий.

т.е., например, чтобы получить информацию о пользователях можно воспользоваться следующим кодом

РаботаССайтомВКонтакте.ПолучитьИнформациюОПользователях("a1dfc7ef2b763d776350375f8a22678a59f28e1ac7e090b4a8486274564d38e9e8a069d10e596223d80d7", "5184504");

первый параметр access_token, второй - id пользователя.

Возвращаемым значением функций является Структура либо массив структур в завимости от формата ответа сервера. Ключами структуры являются параметры возвращаемые в ответе сервером. Приведенный ниже пример демонстрирует вывод имен пользователей с ID 123456 и 654321.

ДанныеОПользователях = ПолучитьИнформациюОПользователях(access_token, "123456,654321");
Для каждого ДанныеОПользователе Из ДанныеОПользователях Цикл
	Сообщить("Имя пользователя " + ДанныеОПользователе.uid +
		" - " + ДанныеОПользователе.first_name);
КонецЦикла;

Используя написанную выше информации, документацию разработчика ВКонтакте и примеры из демострационной конфигурации можно достаточно просто добавить отсутствующий функционал.

Общий модуль "РаботаССайтомВКонтакте" и обработку "АвторизацияНаСайте" можно как есть перенести в рабочую конфигурацию и начать использовать API ВКонтакте.

Демонстрационная база работает как в режиме управляемых форм так и в обычном приложении.

Примечание.

Код демонстрационной конфигурации может использоваться в других разработках без каких-либо органичений.

См. также

Интеграция Альфа Авто 5 / Альфа Авто 6 и AUTOCRM / Инфотек

Сайты и интернет-магазины WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM разных брендов в одной информационной базе в ручном и автоматическом режиме. Без существенных изменений типовой конфигурации. Проверено с брендами: Интеграция 1С и GEELY Интеграция 1С и HAVAL Интеграция 1С и KIA Интеграция 1С и FORD Интеграция 1С и LADA ГАРАНТИЯ 100% ВНЕДРЕНИЯ!

36000 руб.

03.08.2020    15725    10    17    

11

Интеграция 1С — Битрикс24. Обмен задачами

Сайты и интернет-магазины Интеграция WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Управленческий учет Платные (руб)

Интеграция 1С и Битрикс24. Разработка имеет двухстороннюю синхронизацию 1С и Битрикс24 задачами. Решение позволяет создавать пользователя в 1С из Битрикс24 и наоборот. Данная разработка технически подходит под все основные конфигурации линейки продуктов 1С:Предприятие 8.3 (8.3.18.1289). При приобретении предоставляется 1 месяц бесплатных обновлений разработки. Доступна демо-версия продукта с подключением Вашего Битрикс24

5040 руб.

04.05.2021    17540    6    15    

13

Интеграция с сервисом vetmanager

WEB-интеграция Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Бытовые услуги, сервис Платные (руб)

Внешняя обработка разрабатывалась для загрузки документов из Ветменеджер в 1С: Бухгалтерия 3.0

12000 руб.

02.02.2021    16350    42    49    

23

[Расширение] БОР-Навигатор.Культура

Зарплата Бюджетный учет WEB-интеграция Обмен с ГосИС Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бюджетный учет Платные (руб)

Расширение конфигурации, включающее в себя объекты, необходимые для подготовки и сдачи отчета "Штатная численность" системы "БОР-Навигатор.Культура" в программе "1С:Зарплата и кадры государственного учреждения", редакция 3.1.

8400 руб.

01.02.2019    25735    9    0    

7

Заполнение по ИНН или наименованию реквизитов контрагента по данным сайта ФНС

Обмен с ГосИС WEB-интеграция Платформа 1С v8.3 Управляемые формы 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия государственного учреждения 1С:Документооборот 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Платные (руб)

Обработка является альтернативой механизму, разработанному фирмой 1С и заполняющему реквизиты контрагента по ИНН или наименованию. Не требуется действующей подписки ИТС. Вызывается как внешняя дополнительная обработка, т.е. используется, непосредственно, из карточки контрагента. Заполнение по ИНН или наименованию реквизитов контрагента по данным сайта ФНС (egrul.nalog.ru) для БП 2.0, БП 3.0, БГУ 1.0, БГУ 2.0, УТ 10.3, УТ 11.x, КА 1.1, КА 2.x, УПП 1.x, ERP 2.x, УНФ 1.5, УНФ 1.6, УНФ 3.0, ДО 2.1

2400 руб.

28.04.2016    88569    160    215    

318
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Yashazz 4709 24.07.13 17:33 Сейчас в теме
Класс! Обожаю задачки подобной интеграции, спасибо!

И вопрос из серии "некогда самому глянуть" - где-инбудь нормальное описание API там есть?
2. lamelioss 143 24.07.13 17:53 Сейчас в теме
автору +, тема интересна =)
3. Elisy 948 31.07.13 05:23 Сейчас в теме
Не смотрели Facebook на тему создания приложений? Можно ли из FB загружать список друзей с телефонами в 1С и отправлять сообщения пользователям?
4. musatov1c.ru 6 19.08.13 09:52 Сейчас в теме
Интересно. Спасибо за выкладку. Есть запрос на ведение рекламной деятельности через контакт, которую бы можно было учитывать и обсчитывать. Данная разработка может быть путем решения данной задачи.
5. Boudybuilder 35 03.11.13 23:59 Сейчас в теме
Интересная обработка.
Буду качать.

Раз уж есть эта тема , так давайте ее обсудим поподробнее.

Имеем 3 самых больших СоцСети: "ОК" , "ВК" и "FB". Ну и Твиттер тут можно вставить с ними в один ряд, так как его используют на всех сайта для размещения постов.
Самое наверное интересное для меня было бы - так это создать обработку универсальную для всех вышеперечисленных ресурсов.

Но для чего она нам могла бы быть полезной?! Давайте , кто знает о полезностях взаимодействий сайта или 1С с даными сетями , пишите сюда. Не ленитьсь.

Мне кажется , что самое главное - это посты! Выкласть информацию с фоткой на стенку группы , чтобы все ее учасники могли увидеть.

Второе , это сбор контактной информации учасников ,если таковое возможно и предусмотрено АРІ.

Дальше что может быть?
jobkostya1c_ERP; +1 Ответить
6. 3762515 22.07.14 17:10 Сейчас в теме
(5) Boudybuilder, а что за соцсеть "ОК"?
KroVladS; kuzyara; +2 Ответить
16. NewLifeMan 02.04.16 13:32 Сейчас в теме
7. Yashazz 4709 31.07.14 11:04 Сейчас в теме
(0) Не работает даже попытка получения ключа, т.е. по адресной строке https://oauth.vk.com/authorize итд - говорит, что "не удалось загрузить authorize из oauth.vk.com, и всё. Что неправильно?
8. Vix 28 30.08.14 11:19 Сейчас в теме
вошли на сайт, а выход с него как организовать?
9. Boudybuilder 35 29.10.14 00:28 Сейчас в теме
Кто знает , какими символами делать перевод строки. А то уже все перепробовали а вкотнакте все одной строчкой на стенке.
10. ltfriend 954 30.10.14 08:29 Сейчас в теме
(9) Boudybuilder, Перевод строки выполняется обычным способом. Только нужно сообщение кодировать в кодировке URL (urlencode). В предоставленной демо конфигурации можно сделать следующим образом:
ТекстСообщения = РаботаСВнешнимВебСервером.URLEncode(ТекстСообщения);
11. jobkostya1c_ERP 100 01.02.15 09:08 Сейчас в теме
Запомню. Довольно интересная разработка.
12. vladnet 361 22.04.15 19:39 Сейчас в теме
Спасибо за разработку!

В функции:

Функция СформироватьСтрокуПараметровЗапроса(Параметры, access_token)

Надо проверять на тип число:

СтрокаПараметров = СтрокаПараметров + Параметр.Ключ + "=" + ?(ТипЗнч(Параметр.Значение)=Тип("Число"), Формат(Параметр.Значение, "ЧГ=0"), Параметр.Значение) + "&";
13. Midasu 17.08.15 19:29 Сейчас в теме
Не могу разобраться с загрузкой изображения.
Не пойму что должно быть в АдресЗагрузки и АдресРесурса.
Конкретно нужно установить картинку конференции в переписках.
Методы photos.getChatUploadServer и messages.setChatPhoto описаны в api, но как они с файлами взаимодействуют мне не ясно.
В первом методе получаю upload_url, а как туда фото загрузить не ясно, ибо во втором методе его нужно установить.

UPD: А что за Изображение.Записать(...)? Изображение - реквизит типа Картинка? Но зачем оно?
14. s3nsay 21.09.15 20:24 Сейчас в теме
Ребята скиньте у кого есть эта конфигурация на почту leonov_den89@mail.ru, а то средств не хватает на загрузку.
15. dj_serega 390 04.02.16 12:46 Сейчас в теме
"Так как в 1С нет методов для работы с двоичными файлами был придуман следующий способ."
уже в планах :) так что планируйте дорабатывать публикацию :)
http://v8.1c.ru/o7/201602bin/index.htm
17. Xershi 1474 08.10.16 00:48 Сейчас в теме
Дополнил конфигурацию справочником всех прав, для получения токена, но автоматическое получение крашит приложение.
У меня авторизация двухфакторная. но через браузер легко получил.

Еще хотел узнать как понять какое апи использую, у них в новых версиях параметры у методов другие, но версию же я не задавал или тут нужно платформу сайта смотреть?
18. Xershi 1474 09.10.16 15:05 Сейчас в теме
(17) Xershi, сам разобрался. При формировании начального запроса они добавили опционально версию апи, сейчас это
&v=5.57

Плюс перешли на шифрованное соединение и поменяли формат прикрепляемых фоток. Изучив их апи все стало на свои места!
Спасибо за реализацию формирования и парсилки запроса!
19. KRaSH13 15.10.16 00:09 Сейчас в теме
(18) Xershi,
Сервер = "api.vk.com";
Ресурс = СтрШаблон("%1/method/messages.send?user_id=%2&message=%3&access_token=%4&v=5.57", Сервер, IDАккаунта, Сообщение, Токен);

Соединение = Новый HTTPСоединение(Сервер,443,,,,,Новый ЗащищенноеСоединениеOpenSSL());
Запрос = Новый HTTPЗапрос(Ресурс);
Ответ = Соединение.Получить(Запрос);
СообщитьПользователю(Строка(Ответ.КодСостояния));

Остальные параметры тоже есть, токен получен. Ответ на запрос постоянно "404", что бы ни делал. Не пойму в чем проблема, бьюсь 3й час.
20. Xershi 1474 15.10.16 00:18 Сейчас в теме
(19) KRaSH13, у него там метод подключения через ком идет. Я только добавил букву s к отсечению! Так что качай конфу и смотри код.
21. ltfriend 954 15.10.16 11:21 Сейчас в теме
(19) KRaSH13, Зачем вы в "Ресурс" добавляете адрес сервера?
Нужно так
Ресурс = СтрШаблон("method/messages.send?user_id=%2&message=%3&access_token=%4&v=5.57", IDАккаунта, Сообщение, Токен);
22. capitan 2466 22.10.16 21:16 Сейчас в теме
Автор красавчик )


Функция ЗагрузитьФотографиюНаСтену(access_token, uid="", gid="", Изображение) Экспорт

АдресЗагрузки = СтрЗаменить(РаботаССайтомВКонтакте.ПолучитьАдресДляЗагрузкиФотографийНаСтену(access_token, uid, gid), "http://", "");

АдресЗагрузки = СтрЗаменить(РаботаССайтомВКонтакте.ПолучитьАдресДляЗагрузкиФотографийНаСтену(access_token, uid, gid), "https://", "");


23. ltfriend 954 26.10.16 10:08 Сейчас в теме
(22) capitan, Ну так, стараюсь ))
24. Artem1405 25 07.04.17 13:45 Сейчас в теме
А в этой конфигурации только как загружать фото или есть пример скачивания на диск новостей с картинками?
25. a2kat 25.04.17 15:39 Сейчас в теме
Уважаемые форумчане! Перешлите на kg.og@mail.ru конфигурацию работы с API VK please!
26. Serega-artem 16 11.05.17 14:31 Сейчас в теме
Автору огромное спасибо, пригодилось!

Мои пять копеек. Если при загрузке фото на сервер возвращается:

<html> <head><title>301 Moved Permanently</title></head> <body bgcolor="white"> <center><h1>301 Moved Permanently</h1></center> <hr><center> Apache </center> </body> </html>


То вместо

Новый HTTPСоединение(АдресЗагрузки)


Пишем:

ssl4 = Новый ЗащищенноеСоединениеOpenSSL( неопределено, неопределено );
Соединение = Новый HTTPСоединение(АдресЗагрузки,,,,,,ssl4)
27. Santa4527 18.05.17 00:43 Сейчас в теме
Может кто то сталкивался при выгрузки на стену изображения ошибка

Ошибка при загрузке изображения на стену: {ОбщийМодуль.РаботаССайтомВКонтакте.Модуль(1529)}: Ошибка при вызове метода контекста (ОтправитьДляОбработки): Ошибка работы с Интернет: Couldn't resolve host name

8.3.8.1652
Режим совместимости Версия 8.3.7

просто текст отправляет в vk
28. ltfriend 954 21.05.17 13:27 Сейчас в теме
(27) Выложена обновлённая версия демонстрационной конфигурации, где исправлены некоторые ошибки (в том числе и ошибка загрузки изображений).
29. vizgallova 23.05.17 12:56 Сейчас в теме
30. kmpok 01.08.17 15:04 Сейчас в теме
Может кому пригодится. Сделал функцию отправки фотографий на сервер с использованием двоичных данных без записи файлов на диск.
Входящие параметры:
Изображение = двоичные данные картинки.
АдресЗагрузкиФото = Адрес, полученный ранее методом photos.getWallUploadServer. Без "https://"

Функция ВыполнитьОтправкуФото(Изображение, АдресЗагрузкиФото)
	
	Boundary 	 = СтрЗаменить(Строка(Новый УникальныйИдентификатор()), "-", "");
	
	Тело		 = Новый ПотокВПамяти();
	ЗаписьДанных = Новый ЗаписьДанных(Тело,КодировкаТекста.ANSI);
	ЗаписьДанных.ЗаписатьСтроку("--"+Boundary);
	ЗаписьДанных.ЗаписатьСтроку("Content-Disposition: form-data; name=""photo""; filename=""photo.jpeg""");
	ЗаписьДанных.ЗаписатьСтроку("Content-Type: image/jpeg");
	ЗаписьДанных.ЗаписатьСтроку("");
	ЗаписьДанных.Записать(Изображение);
	ЗаписьДанных.ЗаписатьСтроку("");
	ЗаписьДанных.ЗаписатьСтроку("--"+Boundary);

	ДвоичныеДанныеДляОтправки = Тело.ЗакрытьИПолучитьДвоичныеДанные();
			
	ЗаголовокHTTP = Новый Соответствие;
	ЗаголовокHTTP.Вставить("Content-Type", "multipart/form-data; boundary="+Boundary);
	ЗаголовокHTTP.Вставить("Content-Length", XMLСтрока(ДвоичныеДанныеДляОтправки.Размер()));
		
	НТТР = Новый HTTPСоединение(АдресЗагрузкиФото,,,,,,Новый ЗащищенноеСоединениеOpenSSL);
	   
	ЗапросHTTP      = Новый HTTPЗапрос("",ЗаголовокHTTP);
	ЗапросHTTP.УстановитьТелоИзДвоичныхДанных(ДвоичныеДанныеДляОтправки);
	
	ОтветHTTP       = НТТР.ОтправитьДляОбработки(ЗапросHTTP);
		
	СтрокаJSON 	  = ОтветHTTP.ПолучитьТелоКакСтроку();	
	ЧтениеJSON 	  = Новый ЧтениеJSON;
	ЧтениеJSON.УстановитьСтроку(СтрокаJSON);
	
	ПараметрыОтвета = ПрочитатьJSON(ЧтениеJSON);
	
	Возврат ПараметрыОтвета;
		
КонецФункции	
Показать
Rokov; GalMig; fuxic; puabrueha; jobkostya1c_ERP; +5 Ответить
31. kmpok 02.08.17 14:54 Сейчас в теме
Как реализовать отправку смайлов в сообщении? кто-нибудь сталкивался?
Дело в том, что символьные коды смайлом идут с &, а данный символ используется при перечислении параметров.В результате чего логика строки запроса нарушается.
32. Gang031 09.01.18 16:40 Сейчас в теме
А что делать, если вк потребует ввод капчи? если много сообщений допустим отправляешь, то может потребовать
33. Luck_DMST 24 07.02.18 16:35 Сейчас в теме
Спасибо огромное, очень выручили!
34. r0m1n 06.03.18 18:13 Сейчас в теме
У кого выходит ошибка что-то типа "v version is required" - теперь в запросе необходимо явно указывать номер версии API ВК (https://vk.com/dev/version_update), поэтому добавляем соответствующий параметр при вызове любого метода ВК.
35. Serega-artem 16 21.03.18 22:02 Сейчас в теме
(34) Золотой Вы человек! Спасибо большое, полчаса мозг ломал. Немного конкретизирую:

В процедуре СформироватьСтрокуПараметровЗапроса(Параметры, access_token)

Находим строку

СтрокаПараметров = СтрокаПараметров + "access_token=" + access_token";

И приводим её к такому виду:

СтрокаПараметров = СтрокаПараметров + "access_token=" + access_token+"&v=5.73";

Где 5.73 - версия API
36. Wrols 89 07.08.18 07:53 Сейчас в теме
Несколько моментов по поводу размещении публикации поста для группы:

1. В обработках приложенной конфигурации есть управляемые и обычные формы. Рекомендую смотреть управляемые - в них меньше ошибок.

2. При размещении записи на стене с картинкой происходит сначала загрузка фотографии, в результате которой возвращается owner_id, отличающийся от ID пользователя группы. Именно этот owner_id и нужно передавать в attachments.

Процедура РазместитьЗапись(Команда)
	
	Если Не ПустаяСтрока(Объект.file_name) Тогда
		
		Если Лев(Объект.owner_id, 1) = "-" Тогда
			uid = "";
			gid = Сред(Объект.owner_id, 2);
			//{{AZ
			from_group = "1";
			//}}az
		Иначе
			uid = Объект.owner_id;
			gid = "";
			//{{AZ
			from_group = "";
			//}}az
		КонецЕсли;
		
		Попытка
			Параметрыизображения = РаботаССайтомВКонтакте.ЗагрузитьФотографиюНаСтену(Объект.access_token, uid, gid, Новый ДвоичныеДанные(Объект.file_name));
			
			//{{AZ
			//attachments = РаботаССайтомВКонтакте.СохранитьЗагруженнуюФотографиюНаСтене(Объект.access_token,
			//					Параметрыизображения.server, Параметрыизображения.photo, Параметрыизображения.hash, uid, gid).id;

			ПараметрыВложения = РаботаССайтомВКонтакте.СохранитьЗагруженнуюФотографиюНаСтене(Объект.access_token,
								Параметрыизображения.server, Параметрыизображения.photo, Параметрыизображения.hash, uid, gid);
			//}}az
		Исключение
			Сообщить("Ошибка при загрузке изображения на стену: " + ОписаниеОшибки());
			Возврат;
		КонецПопытки;
		
	КонецЕсли;
	
	Попытка
		//{{AZ
		//post_id = РаботаССайтомВКонтакте.РазместитьЗаписьНаСтене(Объект.access_token, Объект.owner_id, Объект.message, attachments,, from_group);
		post_id = РаботаССайтомВКонтакте.РазместитьЗаписьНаСтене(Объект.access_token, Объект.owner_id, Объект.message, ПараметрыВложения,, from_group);
		//}}az
		Сообщить("Запись на стене успешно размещена. post_id = " + post_id);
	Исключение
		Сообщить("Ошибка при размещении записи на стене: " + ОписаниеОшибки());
	КонецПопытки;
	
КонецПроцедуры

Функция РазместитьЗаписьНаСтене(access_token, owner_id="", message, ПараметрыВложения= Неопределено, services="", from_group="", signed="", friends_only="") Экспорт
	
	//{{AZ
	Если ПараметрыВложения <> Неопределено Тогда
		attachments = "photo" + ПараметрыВложения.owner_id + "_" + ПараметрыВложения.id;
	Иначе
		attachments = "";
	КонецЕсли;
	//}}az
	ПараметрыЗапроса = Новый Структура("owner_id,message,attachments,services,from_group,signed,friends_only",
										owner_id,message,attachments,services,from_group,signed,friends_only);
										
	ПараметрыЗапроса.message = РаботаСВнешнимВебСервером.URLEncode(ПараметрыЗапроса.message);
										
	ОтветСервера = ВызватьМетодAPI("wall.post", ПараметрыЗапроса, access_token);
	
	Если ОтветСервера.Свойство("error_code") Тогда
		// произошла ошибка
		ВызватьИсключение СформироватьТекстОшибкиAPI("Произошла ошибка при размещении записи", ОтветСервера);
	КонецЕсли;
	
	Возврат ОтветСервера.post_id;
										
КонецФункции

Показать
37. пользователь 27.01.19 17:59
Сообщение было скрыто модератором.
...
38. user1137665 29.01.19 13:51 Сейчас в теме
Ребята подскажите что я делаю не так??. не удается выгрузить запись на стену
Прикрепленные файлы:
39. echo77 1868 22.07.19 22:08 Сейчас в теме
У меня ошибка еще при авторизации: не удалось скачать authorize из oauth.vk.com
Это про что вообще?
Прикрепленные файлы:
40. megaZ 29.10.19 12:21 Сейчас в теме
На платформе 8.3.15.1700 не работает. Подозреваю, что связано с тем, что код писался еще под платформу, где использовался IE в качестве браузера, а с недавних пор платформа использует Webkit.
Переход по ссылке таким образом "Элементы.HTMLСтраница.Документ.location.href = " не работает, переделал на "HTMLСтраница = ". Далее некорректно ведет себя браузер после загрузки страницы (Процедура HTMLСтраницаДокументСформирован). В Элемент.Документ.location.href лежит просто "https://api.vk.com/blank.html" без параметров, соответственно в Элемент.Документ.location.hash пусто.
41. megaZ 29.10.19 19:47 Сейчас в теме
(40) А нет, на 8.3.13, где уже WebKit все работает. Видимо просто баг платформы 8.3.15.1700
42. prozet-z 28.12.19 19:15 Сейчас в теме
(41), на платформе 8.3.16.1063 точно так же, в Элемент.Документ.location.hash пусто. Как токен тогда получить-то?
43. ltfriend 954 30.12.19 09:50 Сейчас в теме
(42) действительно, Документ.location.hash с использованием WebKit содержит пустое значение. Хотя при тестировании из браузера в адресной строке присутствуют нужные данные. То ли глюк в реализации от 1С (что мне кажется более вероятным), то ли нужно получать как-то по другому. Быстро найти решение, как это исправить не удалось. Пытаюсь разобраться.
На данный момент можно использовать кривой костыль. Открывать ссылку для авторизации в браузере и заставить пользователя копировать URL после авторизации из браузера в текстовое поле и его уже парсить.
Если кто поделиться решением проблемы - буду признателен.
44. ltfriend 954 30.12.19 12:59 Сейчас в теме
(42) причина найдена. Нужно в строке URL в параметре redirect_uri заменить значение на httpS://api.vk.com/blank.html
45. prozet-z 30.12.19 19:03 Сейчас в теме
(44), точно! А я уж начал в мануалах WebKit копаться)
Автор, большое спасибо за публикацию! Я с её помощью синхронизировал отображение товаров в группе в ВК с остатками товаров в магазине на 2500 позиций. Статья очень полезна.
46. CheBurator 3119 21.03.20 11:00 Сейчас в теме
"началом конченого файла:"
это точно! все эти соцсети - конченые
47. пользователь 30.03.20 16:07
Сообщение было скрыто модератором.
...
48. user970589 10 03.10.20 19:00 Сейчас в теме
пытаюсь сам создать. И в самом начале получаю ошибку.
Метод объекта не обнаружен (Перейти).
Полагаю можно опустить, что в УФ ставим Элементы, а не элементыформы, но и там метода не нашлось. Что не так? У всех же получилось? )
49. user970589 10 04.10.20 17:19 Сейчас в теме
Покопался. Что выходит.
Элементы.HTMLСтраница.Документ.location.href- значение не присваивается. Любое. Беру любую переменную - присваиваю значение. В эту не могу.
Вот так должно быть правильно:
Элементы.HTMLСтраница.Документ.location.href ="https://oauth.vk.com/authorize?client_id="+Объект.IDПриложения+"&scope="+Объект.ПраваДоступа+"&redirect_url=http://api.vk.com/blank.html&display=page&response_type=token";
Итог - абоут бланк ((
50. пользователь 14.10.21 13:18
Сообщение было скрыто модератором.
...
Оставьте свое сообщение