Доброго дня!
Подскажите получил CODE первом этапе все ок. на второй выходит 404
Что в параметрах не так не понял.
вот код: и код ниже который работает

&НаКлиенте
Процедура ВторойЭтапДоступа(КодДоступа)

 ПараметрыПОСТ = "/grant_type=authorization_code" + "&";
 ПараметрыПОСТ = ПараметрыПОСТ + "code=" + КодДоступа + "&";
 ПараметрыПОСТ = ПараметрыПОСТ + "client_id=xxx.apps.googleusercontent.com" + "&";
 ПараметрыПОСТ = ПараметрыПОСТ + "client_secret=xxx" + "&";
 ПараметрыПОСТ = ПараметрыПОСТ + "redirect_uri=urn:ietf:wg:oauth:2.0:oob";

 Сервер = "accounts.google.com/o/oauth2/token";
 Соединение = Новый HTTPСоединение(Сервер);

        Заголовки = Новый Соответствие;
 Заголовки.Вставить("Content-Type", "application/x-www-form-urlencoded");
 Запрос = Новый HTTPЗапрос(ПараметрыПОСТ, Заголовки);

        Ответ =Соединение.ОтправитьДляОбработки(Запрос);// .Получить(Запрос);
 Если Ответ.КодСостояния = 200 Тогда // Данные получены, обрабатываем их
     ТекстСтраницы= Ответ.ПолучитьТелоКакСтроку();
 КонецЕсли;

КонецПроцедуры

        ХТТПЗапрос = Новый COMОбъект("WinHttp.WinHttpRequest.5.1");
 // Выполняем отключение контроля сертификтов
 //Скрипт=Новый COMОбъект("MSScriptControl.ScriptControl");
 //Скрипт.language="javascript";
 //Скрипт.AddObject("ХТТПЗапрос",ХТТПЗапрос);
 //Скрипт.Eval("ХТТПЗапрос.Option(4)=13056");

 // открываем ресурс
 ХТТПЗапрос.Open("POST", "https://accounts.google.com/o/oauth2/token", 0);
 ХТТПЗапрос.setRequestHeader("Content-Type","application/x-www-form-urlencoded");

 ПараметрыПОСТ = "grant_type=authorization_code" + "&";
 ПараметрыПОСТ = ПараметрыПОСТ + "code=" + КодДоступа + "&";
 // получены при регистрации приложения
 ПараметрыПОСТ = ПараметрыПОСТ + "client_id=xxx.apps.googleusercontent.com" + "&";
 ПараметрыПОСТ = ПараметрыПОСТ + "client_secret=xxx" + "&";
 ПараметрыПОСТ = ПараметрыПОСТ + "redirect_uri=urn:ietf:wg:oauth:2.0:oob";
 // Отправляем для обработки сервером
 ХТТПЗапрос.Send(ПараметрыПОСТ);
---
flyer, а так:

```1c
    Элементы.ПолеHTML.document.documentElement.outerHTML
```
?
У меня, по крайней мере, в тонком клиенте это работает.

```1c
    //так можно показать все содержимое:
    ТД = Новый ТекстовыйДокумент;
    ТД.УстановитьТекст(Элементы.ПолеHTML.document.documentElement.outerHTML);
    ТД.Показать();
```
---
Сам с гуглом не работал, но могу предположить, что вместо

```1c
    Сервер = "accounts.google.com/o/oauth2/token";
```

должно быть

```1c
    Сервер = "accounts.google.com";
```

И параметры запроса должны начинаться с ?, т.е., как-то так:

```1c
    ПараметрыПОСТ = "/o/oauth2/token?grant_type=authorization_code" + "&";
```

P.S.: 404 означает [file] not found. Подробности здесь.
---
le_, это исправил сейчас вот с чем бьюсь

ИмяФайлаОтправки = ПолучитьИмяВременногоФайла("txt");

 ФайлИд = Новый ЗаписьТекста(ИмяФайлаОтправки, КодировкаТекста.UTF8,, Истина, Символы.ПС);

 ПараметрыПОСТ = "grant_type=authorization_code" + "&";
 ПараметрыПОСТ = ПараметрыПОСТ + "code=" + КодДоступа + "&"; // получен на первом этапе доступа
 // получены при регистрации приложения
 ПараметрыПОСТ = ПараметрыПОСТ + "client_id=xxx.apps.googleusercontent.com" + "&";
 ПараметрыПОСТ = ПараметрыПОСТ + "client_secret=xxx" + "&";
 ПараметрыПОСТ = ПараметрыПОСТ + "redirect_uri=urn:ietf:wg:oauth:2.0:oob";

 ФайлИд.ЗаписатьСтроку(ПараметрыПОСТ);
 ФайлИд.Закрыть();

 СайтУРЛ = "accounts.google.com";
 //
 УРЛ = "/o/oauth2/token";

 РезультатИмяФайла = ПолучитьИмяВременногоФайла("txt");

 Заголовки = Новый Соответствие;
 Заголовки.Вставить("POST /o/oauth2/token HTTP/1.1");
 Заголовки.Вставить("Host", СайтУРЛ);
 Заголовки.Вставить("Content-Type", "application/x-www-form-urlencoded");

 Соединение = Новый HTTPСоединение(СайтУРЛ,,,,,Истина);//,,,,,Истина
 Попытка
  Соединение.ОтправитьДляОбработки(ИмяФайлаОтправки, УРЛ, РезультатИмяФайла,Заголовки);
 Исключение
  Сообщить("Не удалось распечатать документ. Описание ошибки: " + ОписаниеОшибки());
 КонецПопытки;

вот что получаю

 Ошибка при вызове метода контекста (ОтправитьДляОбработки): Ошибка при выполнении файловой операции '/o/oauth2/token':
 Ошибка работы с Интернет: Ошибка доступа к ресурсу. Путь не найден: (400). {
  "error" : "invalid_request",
  "error_description" :
"Invalid parameter value for redirect_uri: Missing authority: urn:ietf:wg:oauth:2.0:oob\n"
}
: Ошибка работы с Интернет: Ошибка доступа к ресурсу. Путь не найден: (400)
---
flyer, попробуйте так:

```1c
    Соединение.ОтправитьДляОбработки(ИмяФайлаОтправки, УРЛ + "?" + ПараметрыПОСТ, РезультатИмяФайла, Заголовки);
```
---
le_, так писал. это не помогает. тут в ответе у меня 2 ошибки:
1 неправильный запрос
2 параметр redirect_uri не нравиться.
---
flyer, ну, у меня нет идей на этот счет...
По поводу Missing authority, стоит проверить, взято ли "urn:ietf:wg:oauth:2.0:oob" такое, которое сгенерировало Google Developers Console...
---
le_, сейчас вот так попробовал сделать. в файл параметров убрал Символы.ПС и ВК. и порядок следования параметров изменил. теперь ошибка другая.
        ФайлИд = Новый ЗаписьТекста(ИмяФайлаОтправки, КодировкаТекста.UTF8,"" );

 ПараметрыПОСТ = "code=" + сокрЛП(КодДоступа) + "&"; // получен на первом этапе доступа
 // получены при регистрации приложения
 ПараметрыПОСТ = ПараметрыПОСТ + "client_id=xxx.apps.googleusercontent.com" + "&";
 ПараметрыПОСТ = ПараметрыПОСТ + "client_secret=xxx" + "&";
 ПараметрыПОСТ = ПараметрыПОСТ + "redirect_uri=urn:ietf:wg:oauth:2.0:oob" + "&";
 ПараметрыПОСТ = ПараметрыПОСТ + "grant_type=authorization_code";

 ФайлИд.ЗаписатьСтроку(ПараметрыПОСТ);
 ФайлИд.Закрыть();

Ошибка при выполнении файловой операции '/o/oauth2/token': Ошибка работы с Интернет: Ошибка доступа к ресурсу. Путь не найден: (400).
{
  "error" : "invalid_grant",
  "error_description" : "Invalid code."
} : Ошибка работы с Интернет: Ошибка доступа к ресурсу. Путь не найден: (400)
---
flyer, пишет, что код неправильный...
---
le_, при чем этот код работает нормально
        ХТТПЗапрос = Новый COMОбъект("WinHttp.WinHttpRequest.5.1");

 // открываем ресурс
 ХТТПЗапрос.Open("POST", "https://accounts.google.com/o/oauth2/token", 0);
 ХТТПЗапрос.setRequestHeader("Content-Type","application/x-www-form-urlencoded");

 // формируем дополнительные параметры
 ПараметрыПОСТ = "grant_type=authorization_code" + "&"; // предопределенный в документации
 ПараметрыПОСТ = ПараметрыПОСТ + "code=" + КодДоступа + "&"; // получен на первом этапе доступа
 // получены при регистрации приложения
 ПараметрыПОСТ = ПараметрыПОСТ + "client_id=xxx.apps.googleusercontent.com" + "&";
 ПараметрыПОСТ = ПараметрыПОСТ + "client_secret=xxx" + "&";
 ПараметрыПОСТ = ПараметрыПОСТ + "redirect_uri=urn:ietf:wg:oauth:2.0:oob";
 // Отправляем для обработки сервером
 ХТТПЗапрос.Send(ПараметрыПОСТ);

 Текст = Новый ЗаписьТекста("C:\1\GapiResp.txt", КодировкаТекста.UTF8);
 Текст.ЗаписатьСтроку(ХТТПЗапрос.ResponseText());
 Текст.Закрыть();
---
flyer, а если с пом. HTTPСоединение отправить такой же запрос, с таким же заголовком и кодом без СокрЛП() - не работает?
С кодировкой передаваемого текстового файла и разделителями строк еще можно поэкспериментировать...
---
flyer, вот щас над этим работаю. надеюсь поборю
---
да парни нужна помощь
---
flyer, я вот еще подумал, что когда "Content-Type" - "application/x-www-form-urlencoded", то, вероятно, сервер ждет строку, обработанную ф-цией urlencode(), и может быть, WinHttpRequest делает это по-умолчанию, а HTTPСоединение - нет...
Т.е., строка вида "asd/123fgh:q w e!777\dfg", возможно, должна быть передана в виде "asd%2F123fgh%3Aq%20w%20e!777%5Cdfg".
---
le_, это уже сделал. т.к. я все это делаю для мобильного приложения то теперь у меня новый гемморой.

При первом обращении я должен получить разрешение от пользователя что он подтверждает доступ моей программы к его данным и получить первичный код доступа. это я делаю с помощью HTML документа и строки запроса.

         ПараметрыБраузера = "response_type=code" + "&";
 ПараметрыБраузера = ПараметрыБраузера + "client_id=xxx.apps.googleusercontent.com" + "&";

 ПараметрыБраузера = ПараметрыБраузера + "scope=https://www.googleapis.com/auth/cloudprint" + "&";
 ПараметрыБраузера = ПараметрыБраузера + "redirect_uri=urn:ietf:wg:oauth:2.0:oob";

 // адрес на котором пользователь выполнит авторизацию
 АдресАвторизации = "https://accounts.google.com/o/oauth2/auth" + "?";

 // Формируем полный адрес авторизации вместе с параметрами
 ПолныйАдресАвторизации = АдресАвторизации + ПараметрыБраузера;

 // И показываем страницу пользователю
 ПолеHTML = ПолныйАдресАвторизации;

и в процедуре

&НаКлиенте
Процедура ПолеHTMLДокументСформирован(Элемент)

 ЗаголовокОкна = Элементы.ПолеHTML.Документ.nameProp; //Вот тут ошибка для Документ. для мобилы он не пашет.

 // Анализируем его, ищем код доступа, выделяем из строки
 Если Лев(ЗаголовокОкна, 13) = "Success code=" Тогда
  КодДоступа = Сред(ЗаголовокОкна, 14);

  // и передаем на второй этап
  ВторойЭтапДоступа(КодДоступа);
 КонецЕсли;

КонецПроцедуры

Получаю ошибку Поле объекта не найдено Документ.
а мне надо получить код доступа из заголовка браузера.
---
flyer, а так:

```1c
    Элементы.ПолеHTML.document.documentElement.outerHTML
```
?
У меня, по крайней мере, в тонком клиенте это работает.

```1c
    //так можно показать все содержимое:
    ТД = Новый ТекстовыйДокумент;
    ТД.УстановитьТекст(Элементы.ПолеHTML.document.documentElement.outerHTML);
    ТД.Показать();
```
---
le_, document в моб.приложении недоступен. сейчас кое что попробую. если все ок будет то напишу.
---
пришлось сделать так. появляется окно с подтверждением прав. нажимаем принять и после этого появляется окно с кодом. код копируем и запоминаем. далее вызываем второй этап.