Интеграция 1С и Power BI

1. wiseowl 23.10.17 12:40 Сейчас в теме
Здравствуйте. Делаю интеграцию 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=htt­ps%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"));
			
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
6. starik-2005 3077 23.10.17 17:37 Сейчас в теме
(1)
HTTPЗапрос.Заголовки.Вставить("Content-type", "application/x-www-form-urlencoded");
HTTPЗапрос.Заголовки.Вставить("Content-type", "application/json");
2. KSy 23.10.17 13:16 Сейчас в теме
Добрый день! Пожалуйста, подробнее опишите проблему. Что именно не получается? 1С или Power BI выдаёт какую-то ошибку?
3. wiseowl 23.10.17 13:25 Сейчас в теме
(2) При отправке запроса из 1С в ответе получаю ответ от сервера 403. При успешном выполнении запроса, насколько я понимаю, должен быть ответ 201 и сам ответ от сервера в формате JSON.
Тестировала запрос в http://docs.powerbi.apiary.io/ там все отлично работает, данные в power bi добавляются, а из 1С почему-то нет. В заголовках у меня вроде бы ничего лишнего нет и все что надо указано...
Не могу понять что нужно настроить и почему у меня нет доступа к запросам rest api.
Я все-таки думаю что это потому что моя учетная запись не администраторская и на портале azure скорее всего где-то запрещен доступ к использованию api. Если подскажете где посмотреть, то я попрошу доступ у администратора..
4. wiseowl 23.10.17 13:27 Сейчас в теме
(2)Но если у меня нет какого-то доступа, тогда не понятно почему на http://docs.powerbi.apiary.io/ запрос выполняется нормально
5. wiseowl 23.10.17 15:46 Сейчас в теме
https://docs.microsoft.com/ru-ru/azure/active-directory-b2c/active-directory-b2c-reference-oauth-code
Здесь написано что при получении кода доступа нужно обязательно использовать параметр "p", но с ним я не могу получить токен, выдает ошибку 404. Скорее всего проблема в этом, но у меня тогда не получается выполнить запрос...
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот