Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
14 дек 2024, 21:56

Как с помощью 1С делать авторизацию в dropbox?

Автор gulnyr, 29 сен 2022, 11:21

0 Пользователей и 1 гость просматривают эту тему.

gulnyr

Написал код таким образом:

&НаКлиенте
Процедура АвторизацияВДропбокс(Команда)
    ДанныеАвторизации = Новый Структура;
    AppId = "Здесь App key";
    AppS = "Здесь App secret";
    ДанныеАвторизации.Вставить("AppId", AppId);
    ДанныеАвторизации.Вставить("AppS", AppS);
   
    WinHttp = Новый COMОбъект("WinHttp.WinHttpRequest.5.1");
    WinHttp.Open("POST", "https://www.dropbox.com/oauth2/authorize?client_id="+AppId+"&response_type=code&token_access_type=offline", Ложь);
    WinHttp.SetRequestHeader("Authorization", "OAuth oauth_version=""2.0"", oauth_signature_method=""PLAINTEXT"", oauth_consumer_key=""" + ДанныеАвторизации.AppId + """, oauth_signature=""" + ДанныеАвторизации.AppS + "&""");
    WinHttp.Send();
    Сообщить(WinHttp.Status);
КонецПроцедуры

Но почему-то авторизация не проходит, выводит статус 404. Как делать правильно?

antoneus

Попробуйте HTTPСоединение, HTTPЗапрос, типа:

Соединение = Новый HTTPСоединение("dropbox.com",,,,,, Новый ЗащищенноеСоединениеOpenSSL);
Запрос = Новый HTTPЗапрос("oauth2/authorize?client_id="+AppId+"&response_type=code&token_access_type=offline");
Запрос.Заголовки.Вставить("Authorization", "OAuth oauth_version=""2.0"", oauth_signature_method=""PLAINTEXT"", oauth_consumer_key="""
+ ДанныеАвторизации.AppId + """, oauth_signature=""" + ДанныеАвторизации.AppS + "&""");
Ответ = Соединение.ОтправитьДляОбработки(Запрос);
Сообщить(Ответ.КодСостояния)

gulnyr

antoneus, выводится состояние 301. Это получается где-то адрес неправильно введено? (т.е. устаревший адрес)

gulnyr

antoneus,

Написал еще такой вариант:

&НаКлиенте
Процедура АвторизацияВДропбокс(Команда)

ДанныеАвторизации = Новый Структура;
AppId = "sdf2sdfiud8sfsd";
AppS = "xcve5wrgd0dfg";

WinHttp = Новый COMОбъект("WinHttp.WinHttpRequest.5.1");

WinHttp.Open("POST", "https://www.dropbox.com/oauth2/authorize", Ложь);
    WinHttp.Send("client_id="+AppId+"&token_access_type=offline&response_type=code");
    Если WinHttp.Status = 200 Тогда
      Сообщить(WinHttp.ResponseText);
    Иначе
      Сообщить("HTTP " + WinHttp.Status + " " + WinHttp.StatusText);
      Возврат;
    КонецЕсли;

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

Но выводится состояние 404. Что здесь может быть не так?

antoneus


gulnyr

antoneus, если не ошибаюсь, нужно добиться статуса 200

antoneus

От dropbox'a что нужно, я имел в виду? Там api есть, если что.

gulnyr

antoneus, задача такая: авторизоваться в дропбокс и прочитать данные документа excel, с помощью api

antoneus

Сперва нужно получить токен (создать приложение в dropbox, дать ему права на чтение файлов). Потом выполнить такое

Соединение = Новый HTTPСоединение("content.dropboxapi.com",,,,,, Новый ЗащищенноеСоединениеOpenSSL);
Запрос = Новый HTTPЗапрос("2/files/download");
Запрос.Заголовки.Вставить("Authorization", "Bearer " + Токен);
Запрос.Заголовки.Вставить("Content-Type", "application/octet-stream");
ПараметрыЗаписи = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Нет,,, ЭкранированиеСимволовJSON.СимволыВнеASCII);
Запись = Новый ЗаписьJSON;
Запись.УстановитьСтроку(ПараметрыЗаписи);
ЗаписатьJSON(Запись, Новый Структура("path", "/" + ПутьКФайлу));
Запрос.Заголовки.Вставить("Dropbox-API-Arg", Запись.Закрыть());

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

gulnyr

antoneus, почему-то выводится код состояния 409.
 
Сперва проставил нужные права на чтение файлов:
 Screenshot_299.png

Затем сгенерировал токен доступа:
Screenshot_300.png 

Создал переменный Токен, присвоил номер созданного ранее токена доступа.
Выдается код состояния 409. В чём может быть проблема?

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск