Здравствуйте. Делаю интеграцию 1С и Power BI через REST API. Я зарегистрировала приложение на портале Azure, выбрала там в настройках все разрешения.
Запросом HTTP получила код авторизации и токен доступа для приложения. Но при отправке любого POST запроса к api.powerbi.com/... получаю ответ сервера 403 (доступ запрещен).
В заголовке запроса вставляю token который получила при авторизации. Подскажите какие права необходимо еще настроить, чтобы можно было передать данные в power BI. В http://docs.powerbi.apiary.io запрос обрабатывается нормально и наборы данных создаются и добавляются в power BI. Но этот же запрос из 1С не срабатывает...
в Данном коде я получаю токен доступа, создаю JSON и пытаюсь его отправить в Power BI, но не получается...
Адрес="login.microsoftonline.com";
ssl = Новый ЗащищенноеСоединениеOpenSSL();
//СтрокаJSON = СтруктураВJSON(Структура, Истина);
//Новый СертификатКлиентаWindows(
// СпособВыбораСертификатаWindows.Выбирать),
//Новый СертификатыУдостоверяющихЦентровWindows());
Если Код <> NULL Тогда
// используя Код получаем access_token и refresh_token
HTTPСоединение = Новый HTTPСоединение(
Адрес,
, // порт
, // пользователь
, // пароль
, // прокси
5, // таймаут в секундах
ssl// защищенное HTTPS соединение
);
HTTPЗапрос = Новый HTTPЗапрос("/common/OAuth2/Token/");
HTTPЗапрос.Заголовки.Вставить("Content-type", "application/x-www-form-urlencoded");
HTTPЗапрос.УстановитьТелоИзСтроки("grant_type=authorization_code&code="+Код+"&redirect_uri=https%3A%2F%2Fapp.powerbi.com%2Frecentlyviewed&client_id=3bf6d724-6dae-4177-a437-cd1e20619bd8");
Ответ = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
Сообщить("Код результата: " + Ответ.КодСостояния);
Если Ответ.КодСостояния <> 200 Тогда
ВызватьИсключение "Ошибка при получении access_token";
Иначе
//Сообщить("Ответ: " + Ответ.ПолучитьТелоКакСтроку("UTF-8"));
// разобрать полученный json
json = Ответ.ПолучитьТелоКакСтроку();
Чтение = Новый ЧтениеJSON;
Чтение.УстановитьСтроку(json);
ОтветСтруктура = ПрочитатьJSON(Чтение);
// сохраняю параметры подключения
AccessToken = ОтветСтруктура.access_token;
RefreshToken = ОтветСтруктура.refresh_token;
RefreshTime = ТекущаяДата() + ОтветСтруктура.expires_in;
Данные =Новый Структура;
Данные.Вставить("Name","SalesMarketing");
//Данные.tables.Вставить("Name","Product");
//Данные.tables.Вставить("Columns", Новый Массив);
Колонки=Новый Структура;
Колонки.Вставить(Новый структура ("Name,datatype","ProductID","Int64"));
Колонки.Вставить(Новый структура ("Name,datatype","Name","String"));
Колонки.Вставить(Новый структура ("Name,datatype","Category","String"));
Колонки.Вставить(Новый структура ("Name,datatype","IsCompete","bool"));
Колонки.Вставить(Новый структура ("Name,datatype","ManufacturedOn","DateTime"));
Данные.Вставить("tables",Новый Структура ("Name,Columns","Product", Колонки ));
ЗаписьJSON= Новый ЗаписьJSON;
ПараметрыЗаписиJSON=Новый ПараметрыЗаписиJSON( ,Символы.Таб);
ЗаписьJSON.ОткрытьФайл("C:\Users\kuznecova\Desktop\simpleWrite.json",,,ПараметрыЗаписиJSON);
ЗаписатьJSON(ЗаписьJSON,Данные);
ЗаписьJSON.Закрыть();
HTTPСоединение = Новый HTTPСоединение(
"api.powerbi.com",
, // порт
, // пользователь
, // пароль
, // прокси
5, // таймаут в секундах
ssl// защищенное HTTPS соединение
);
//Сообщить(AccessToken);
HTTPЗапрос = Новый HTTPЗапрос("/v1.0/myorg/reports");
HTTPЗапрос.Заголовки.Вставить("Content-Type", "application/json");
HTTPЗапрос.Заголовки.Вставить("Authorization", "Bearer " +AccessToken);
HTTPЗапрос.УстановитьТелоИзСтроки(ЗаписьJSON, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
Ответ = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
Сообщить("Код результата: " + Ответ.КодСостояния);
Сообщить("Ответ: " + Ответ.ПолучитьТелоКакСтроку("UTF-8"));
(2) При отправке запроса из 1С в ответе получаю ответ от сервера 403. При успешном выполнении запроса, насколько я понимаю, должен быть ответ 201 и сам ответ от сервера в формате JSON.
Тестировала запрос в http://docs.powerbi.apiary.io/ там все отлично работает, данные в power bi добавляются, а из 1С почему-то нет. В заголовках у меня вроде бы ничего лишнего нет и все что надо указано...
Не могу понять что нужно настроить и почему у меня нет доступа к запросам rest api.
Я все-таки думаю что это потому что моя учетная запись не администраторская и на портале azure скорее всего где-то запрещен доступ к использованию api. Если подскажете где посмотреть, то я попрошу доступ у администратора..