Имя: Пароль:
1C
1С v8
googgle drive api v3: не получается create permissions на мой google-sheets file
0 Cthulhu
 
02.11.19
14:03
access_token живой, залогинен под владельцем googlesheets-файла, fileId выдираю из url (открытого в браузере гугл-шита) между "https://docs.google.com/spreadsheets/d/"; и следующим слэшем("/").

inUserType = "user"; inUserRole = "reader";
//inUserEmail = "<мыло юзера, которому надо дать права на просмотр>";
//SheetsId = "<выдранный из урла гуглшита ИД файла>";
SslПараметр = Новый ЗащищенноеСоединениеOpenSSL( неопределено, неопределено );
Соединение = Новый HTTPСоединение(СерверГугл, , , , , 10 , SslПараметр );
Заголовки = Новый Соответствие;
Заголовки.Вставить("Authorization", "Bearer " + inAccessToken);
HTTPЗапрос = Новый HTTPЗапрос("/drive/v3/files/"+SheetsId+"/permissions?field=*", Заголовки);
ТелоЗапроса = Новый Структура; ТелоЗапроса.Вставить("kind","drive#permission");
ТелоЗапроса.Вставить("type",inUserType); ТелоЗапроса.Вставить("role",inUserRole);
ТелоЗапроса.Вставить("emailAddress",inUserEmail);    // мыло юзера, которому надо дать права на просмотр
НастройкиСериализации = Новый НастройкиСериализацииJSON;
НастройкиСериализации.ВариантЗаписиДаты = ВариантЗаписиДатыJSON.ЛокальнаяДатаСоСмещением;
НастройкиСериализации.ФорматСериализацииДаты = ФорматДатыJSON.ISO;
ЗаписьJSON = Новый ЗаписьJSON; ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, ТелоЗапроса, НастройкиСериализации);
СтрJSON = ЗаписьJSON.Закрыть();
HTTPЗапрос.УстановитьТелоИзСтроки( СтрJSON , КодировкаТекста.UTF8 );
//HTTPОтвет = Соединение.ОтправитьДляОбработки( HTTPЗапрос );    // так тоже пробовал - с тем же результатом
HTTPОтвет = Соединение.ВызватьHTTPМетод( "POST" , HTTPЗапрос );
Если HTTPОтвет.КодСостояния >299 Тогда Сообщить("Ошибка создания новых прав доступа (код состояния = "
+ HTTPОтвет.КодСостояния + "):" + Символы.ВК + СтрокаОтвет) КонецЕсли;

результат удручает:
Ошибка создания новых прав доступа (код состояния =  400):
{
"error": {
  "errors": [
   {
    "domain": "global",
    "reason": "badContent",
    "message": "Unsupported content with type: application/octet-stream"
   }
  ],
  "code": 400,
  "message": "Unsupported content with type: application/octet-stream"
}
}
******* помощи прошу!..
ну или киньте куском работающего кода, плз, на эту тему

заранееблагодаренивсётакоэ..........
1 Cthulhu
 
02.11.19
14:03
2 Cthulhu
 
02.11.19
14:05
а, да, там пропущено (перед "Если в конце): СтрокаОтвет = HTTPОтвет.ПолучитьТелоКакСтроку();
3 Сияющий в темноте
 
03.11.19
00:47
так явно content type в application/json поставь
ведь ему именно это не нравится.
4 Cthulhu
 
03.11.19
11:40
(3): спасибо, добрый человек.
знать бы еще куда-как (кодом) это дело запихнуть...
5 Fram
 
03.11.19
11:50
(4) в заголовки
6 Cthulhu
 
03.11.19
11:53
(3) (4) СПАСИБО ЛЮДИ!
"методом тыка" (т.к. в инет-кишках я абсолютный некопенгаген) сработал вариант

Заголовки.Вставить("Content-Type", "application/json");
7 Сияющий в темноте
 
03.11.19
23:47
(6) я же не знал,что ты настолько как свинья в апельсинах
тем более,что а коде заголовки используются.