我目前正在从事PowerBI集成。我已经设置了一个应用程序,并授予了对PowerBI Service API的访问权限。
但是获取访问令牌后,当我尝试调用https://api.powerbi.com/v1.0/myorg/datasets时得到403
即使我也拥有该权限,即使尝试调用API以获取所有工作区,我也会得到403。
这是我的示例代码:
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\"}" + "]}]}";
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数据流.Read.All数据流.ReadWrite.All数据集.Read.All Dataset.ReadWrite.All Gateway.Read.All Gateway.ReadWrite.All Report.Read.All Report.ReadWrite.All StorageAccount.Read.All StorageAccount.ReadWrite.All租户.Read.All租户.ReadWrite.All Workspace.Read.All Workspace.ReadWrite.All”,
[另外,请注意,我是PowerBI的普通用户。要使用API。我做了以下事情:
使用客户端ID和密码创建了新应用
设置API的正确权限
我未对PowerBI进行任何更改...我假设API权限已足够?
非常感谢指导。
已解决。问题出在我使用的String.format函数。