403 Запрещено, когда я пытаюсь вызвать PowerBI API для набора данных pu sh или получить все рабочие области - PullRequest
0 голосов
/ 17 июня 2020

В настоящее время я работаю над интеграцией PowerBI. Я настроил приложение и предоставил доступ к API-интерфейсам PowerBI Service.

Но после получения токена доступа я получаю 403, когда пытаюсь позвонить https://api.powerbi.com/v1.0/myorg/datasets

Я получаю 403, даже если пытаюсь вызвать API, чтобы получить все рабочие области, хотя у меня тоже есть это разрешение.

Вот мой пример кода:


        String datasetJson = "{\"name\": \"Sales101\", \"tables\": " + "[{\"name\": \"Product\", \"columns\": "
                + "[{ \"name\": \"ProductID\", \"dataType\": \"Int64\"}, "
                + "{ \"name\": \"Name\", \"dataType\": \"string\"}, "
                + "{ \"name\": \"Category\", \"dataType\": \"string\"},"
                + "{ \"name\": \"IsCompete\", \"dataType\": \"bool\"},"
                + "{ \"name\": \"ManufacturedOn\", \"dataType\": \"DateTime\"}" + "]}]}";</p>

<pre><code>    OkHttpClient client = new OkHttpClient.Builder().followRedirects(false).build();
    RequestBody formBody = RequestBody.create(MediaType.parse("application/json"), datasetJson);

    Request request = new Request.Builder().addHeader("Authorization", String.format("Bearer {0}", accessToken))
            .url("https://api.powerbi.com/v1.0/myorg/datasets").post(formBody).build();

    Call call = client.newCall(request);
    okhttp3.Response response = call.execute();

Обратите внимание, что у моего токена доступа, похоже, есть необходимые разрешения. Пожалуйста, посмотрите ниже отрывок, когда я декодировал свой JWT:

    "scp": "App.Read.All Capacity.Read.All Capacity.ReadWrite.All Content.Create Dashboard.Read.All 
    Dashboard.ReadWrite.All Dataflow.Read.All Dataflow.ReadWrite.All Dataset.Read.All 
    Dataset.ReadWrite.All Gateway.Read.All Gateway.ReadWrite.All Report.Read.All Report.ReadWrite.All 
    StorageAccount.Read.All StorageAccount.ReadWrite.All Tenant.Read.All Tenant.ReadWrite.All 
    Workspace.Read.All Workspace.ReadWrite.All",

Также обратите внимание, что я обычный пользователь PowerBI. Чтобы использовать API ... Я сделал следующее:

  • Создал новое приложение с идентификатором клиента и секретом

  • Настроил нужные разрешения для API

Я не вносил никаких изменений в PowerBI ... Я полагаю, что разрешений API достаточно?

Руководство очень ценится.

1 Ответ

1 голос
/ 17 июня 2020

это решено. Проблема была в функции String.format, которую я использовал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...