Любой лучший способ в Power BI выполнять вызовы REST API, такие как HTTP GET, для чтения данных с использованием Dynami c Access Token (Key) - PullRequest
1 голос
/ 27 мая 2020

Попытка создать несколько отчетов Power BI с помощью вызовов REST API. Для этого потребуется сначала сгенерировать «токен доступа», а затем передать этот ключ различным вызовам API в целях аутентификации для чтения данных.

Я видел много потоков, которые используют «токен доступа» (ключ) в качестве Строка запроса URL или как заголовок HTTP в источнике данных Power BI Web. Но пытаюсь получить токен доступа, созданный динамически, а затем передать его в виде заголовков в вызовах GET.

В настоящий момент я пытаюсь прочитать данные из Adobe sign , и они предоставляют данные через вызовы REST API а авторизованные пользователи могут использовать HTTP GET для чтения данных со своего портала. Существует возможность создания приложения c для конкретной организации и токенов доступа с использованием их API.

Так что, пожалуйста, поделитесь, если вы знаете, как динамически генерировать токен доступа во время каждого обновления набора дат sh с использованием POST, а затем вызовите GET для получения данных, необходимых для отчетов.

Приведенные ниже изображения являются предложенными вызовами API и протестированы с помощью Postman

enter image description here

enter image description here

1 Ответ

1 голос
/ 31 мая 2020

Я добился чего-то подобного, создав специальный коннектор powerbi. Это позволяет легко аутентифицироваться в любом стандартном REST API (или любых других источниках). Конечно, вы также можете проделать некоторую работу по аутентификации в некоторых других пользовательских API (у меня была эта проблема). Но у adobe sign api неплохая реализация oauth2. Пользовательский соединитель, вероятно, является лучшим рекомендуемым решением. Вы можете делать очень сильные вещи (я делал). Это способ создания готовых к работе решений.

Как создать собственный соединитель: https://github.com/Microsoft/DataConnectors/blob/master/docs/m-extensions.md#overview

  1. Установите Power Query SDK из Visual Studio Marketplace
  2. Создание нового проекта коннектора данных
  3. Определение логики коннектора c
  4. Создание проекта для создания файла расширения
  5. Создание [ Мои документы] \ Power BI Desktop \ Каталог настраиваемых коннекторов
  6. Скопируйте файл расширения в этот каталог
  7. Включите функцию предварительного просмотра настраиваемых коннекторов данных в Power BI Desktop (в разделе Файл | Параметры и параметры | Настраиваемые соединители данных)
  8. Перезапустите Power BI Desktop

Если у вас есть базовый c коннектор, вы можете реализовать аутентификацию OAuth https://docs.microsoft.com/en-us/power-query/handlingauthentication, и здесь у вас почти решение для копирования и вставки https://docs.microsoft.com/en-us/power-query/samples/github/readme (из ресурса выше)

GithubSample = [
    Authentication = [
        OAuth = [
            StartLogin = StartLogin,
            FinishLogin = FinishLogin
        ]
    ],
    Label = Extension.LoadString("DataSourceLabel")
];
StartLogin = (resourceUrl, state, display) =>
        let
            AuthorizeUrl = "https://Github.com/login/oauth/authorize?" & Uri.BuildQueryString([
                client_id = client_id,
                scope = "user, repo",
                state = state,
                redirect_uri = redirect_uri])
        in
            [
                LoginUri = AuthorizeUrl,
                CallbackUri = redirect_uri,
                WindowHeight = windowHeight,
                WindowWidth = windowWidth,
                Context = null
            ];
FinishLogin = (context, callbackUri, state) =>
    let
        Parts = Uri.Parts(callbackUri)[Query]
    in
        TokenMethod(Parts[code]);
TokenMethod = (code) =>
    let
        Response = Web.Contents("https://Github.com/login/oauth/access_token", [
            Content = Text.ToBinary(Uri.BuildQueryString([
                client_id = client_id,
                client_secret = client_secret,
                code = code,
                redirect_uri = redirect_uri])),
            Headers=[#"Content-type" = "application/x-www-form-urlencoded",#"Accept" = "application/json"]]),
        Parts = Json.Document(Response)
    in
        Parts;

Затем, когда вы впервые запустите свой соединитель, он попросит пользователя пройти аутентификацию и после этого сохранит токен.

Позже, когда вы запустите коннектор, все запросы к вашему API, выполненные методом Web.Contents https://docs.microsoft.com/en-us/powerquery-m/web-contents, будут аутентифицированы.

...