Имя: Пароль:
1C
 
Rest API и яндекс диск
0 assest
 
01.10.15
11:05
Была поставлена задача, заливать фотографии на Яндекс диск(ЯД). Через WebDav возможно из 1с копировать и удалять файлы. Но не возможно создать папку. Впорос не могу найти как через Rest API подключиться к ЯД из 1С. В поддержке яндекса есть каманда на создание папки:

"https://cloud-api.yandex.net/v1/disk/resources/ ?
  path=<путь к создаваемой папке>
[& fields=<нужные ключи ответа>]"

Но как ее передать и как авторизоваться на ЯД не понятно
1 skafandr
 
01.10.15
11:18
дык если в том же яндексе в поиске забить "1с яндекс диск" видно что в этой жизни всё уже было ;)
2 assest
 
01.10.15
11:21
(1) Что ты имеешь ввиду "Все уже было. В тех статьях описано как скопировать файл и как его удалить. Как создать папку я ищу 2 часа с результатом что это вроде как не возможно из 1С
3 skafandr
 
01.10.15
11:22
(2) Блин,моё сорри.Был неправ.Не проснулся ещё
4 vhl
 
01.10.15
11:23
5 assest
 
01.10.15
11:25
(4) (0) В заголовке приведен этот код, и вопрос как из 1с авторизоваться и куда впихнуть этот код
6 skafandr
 
01.10.15
11:28
(5) Похоже авторизироваться как вот тут описано надо
https://tech.yandex.ru/disk/api/concepts/quickstart-docpage/

Доступ к API

те зарегистрировать 1с https://oauth.yandex.ru/
7 assest
 
01.10.15
11:30
(6) Очень похоже, спасибо. Еще бы что писать в 1с понять и было бы прекрасно
8 skafandr
 
01.10.15
11:31
ну и тут что-то мутили
v8: API Яндекс Диск
9 koreav
 
01.10.15
11:36
Если через api не взлетит, то есть программы, типа NetDrive, которые через WebDav могут примонтировать удаленную систему, как обычный сетевой диск Windows.
10 magicSan
 
01.10.15
12:34
(9) на икспи не взлетит. Не проще на компе запустить яндекс диск и рабоать с папкой???
11 assest
 
01.10.15
14:30
Получилось авторизоваться. Взял команду с яндекс полгона(/v1/disk/resources?path=qwe) возвращается год 413-слишком длинный запрос

Токен = "a5391095bce241e4b8888d99eac6ef4a";
    
    Соединение = новый HTTPСоединение("cloud-api.yandex.net",443,,,,,Новый ЗащищенноеСоединениеOpenSSL);
    Заголовки = Новый Соответствие;
    Заголовки.Вставить("Content-Type","application/json; charset=utf-8");
    Заголовки.Вставить("Authorization", "OAuth "+Токен);

    Запрос = Новый HTTPЗапрос("/v1/disk/resources?path=qwe");

    Ответ = Соединение.Записать(Запрос);;
    Если Ответ.КодСостояния = 200 Тогда
        Джейсон = Новый ЧтениеJSON;
        Джейсон.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку());
        Данные = ПрочитатьJSON(Джейсон);
    КонецЕсли;

Токен я изменил
12 assest
 
01.10.15
14:41
Такие варианты тоже возвращают ошибку
Ответ = Соединение.Записать(Запрос,Заголовки);
Или
Ответ = Соединение.Записать("https://cloud-api.yandex.net:443/v1/disk/resources?path=%2Fqwe";,Заголовки);

И работает только вариант Соединение.Получить(Запрос,Заголовки);
Но Получить= Get, а мне нужно Записать=Put
13 assest
 
01.10.15
17:25
Создание папки. Токен надо получить для своего приложения на сайте яндекса https://tech.yandex.ru/oauth/doc/dg/tasks/get-oauth-token-docpage/
------------------------------------------------------------
Токен = "";
    Соединение = новый HTTPСоединение("webdav.yandex.ru",443,,,,,Новый ЗащищенноеСоединениеOpenSSL);
    Заголовки = Новый Соответствие;
    Заголовки.Вставить("Accept","*/*");
    Заголовки.Вставить("Depth", 1);
    Заголовки.Вставить("Authorization", "OAuth "+Токен);
    Запрос = Новый HTTPЗапрос("",Заголовки);
    Команда = "MKCOL /Pictures/ HTTP/1.1";
    Ответ = Соединение.ВызватьHTTPМетод( "MKCOL /Pictures/"+Имя+" HTTP/1.1", Запрос);
    Если Ответ.КодСостояния = 207 Тогда
        данные  = Ответ.ПолучитьТелоКакСтроку();
    КонецЕсли;
14 assest
 
01.10.15
17:28
Получение фотографии или файла Desert.jpg, указан параметр превью XXXS, поэтому это будет иконка в 50 пикселей
------------------------------------------------------------
Токен = "";
    Соединение = новый HTTPСоединение("webdav.yandex.ru",443,,,,,Новый ЗащищенноеСоединениеOpenSSL);
    Заголовки = Новый Соответствие;
    Заголовки.Вставить("Accept","*/*");
    Заголовки.Вставить("Depth", 1);
    Заголовки.Вставить("Authorization", "OAuth "+Токен);
    Запрос = Новый HTTPЗапрос("",Заголовки);
    Ответ = Соединение.ВызватьHTTPМетод("GET /Desert.jpg?preview&size=XXXS HTTP/1.1", Запрос);
    Если Ответ.КодСостояния = 200 Тогда
        ЭлементыФормы.ПолеКартинки1.Картинка = Новый Картинка(Ответ.ПолучитьТелоКакДвоичныеДанные());
    КонецЕсли;
15 assest
 
01.10.15
17:28
Советую читать руководство разработчика от Яндекс диска
https://api.yandex.ru/disk/doc/dg/yandex-disk-dg.pdf