问题描述
美好的一天。我在我制作的 Xamarin.Forms 应用程序中显示 PowerBi 报告时遇到问题(此处为 PBI 新手)。我只需要查看报告,我不必编辑内容。我获得了访问令牌,然后我做了一个 GET 请求,并从 PowerBi 获得了嵌入的 url,我在 WebView.source 中使用它在屏幕上显示。它加载到该报告,但它说我无权查看我应该拥有的报告(我用于令牌的用户是 PBI PRO 用户)。我得到的文本是“要查看此报告,请向作者请求访问权限”。这是令牌POST代码
string url = "https://login.microsoftonline.com/<pbi_tenant_id>/oauth2/token";
IEnumerable<keyvaluePair<string,string>> parameters = new List<keyvaluePair<string,string>>()
{
new keyvaluePair<string,string>("name","testName"),new keyvaluePair<string,string>("grant_type","password"),string>("scope","openid"),string>("resource","https://analysis.windows.net/powerbi/api"),string>("client_id","<client_id>"),string>("username","<pro_user>"),string>("password","<password>"),string>("client_secret","<client_secret>")
};
HttpContent content = new FormUrlEncodedContent(parameters);
在这一切之后,我得到了我的令牌,并使用该令牌发出了 GET 请求以获取嵌入的 url
using (HttpResponseMessage response = await client.PostAsync(url,content))
{
if (response.IsSuccessstatusCode)
{
using (HttpContent contentOfReponse = response.Content)
{
try
{
string tokenResponseJSON = await contentOfReponse.ReadAsstringAsync(); //token in json format that I needed to convert to string in next line
var tokenRepsonse = JsonConvert.DeserializeObject<TokenInfoModel>(tokenResponseJSON);
string accesstoken = tokenRepsonse.access_token; //my string token
try
{
string pbiUrl = "https://api.powerbi.com/v1.0/myorg/reports/<company_report_id>";
client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer",accesstoken); //Authorization of request
var response2 = await client.GetStringAsync(pbiUrl);
var rese = JsonConvert.DeserializeObject<PBIRepost>(response2);
PbiEmbedUrl = rese.embedUrl + "&autoAuth=true" + "&isOwnedByMe=" + rese.isOwnedByMe + "apps/<app_id>";
RaisePropertyChanged(PbiEmbedUrl);
}
catch (Exception ex)
{
//await App.Current.MainPage.displayAlert();
}
}
catch (Exception)
{
//await App.Current.MainPage.displayAlert();
}
}
}
else
{
//await App.Current.MainPage.displayAlert();
}
}
所有这些都有效,我得到了 url 并在打开到 PBI 网站的 WebView 中使用它,但显示“要查看此报告,请询问作者访问权限”。 现在可能非常重要的事情是,在我的手机上,我不是专业的 PBI 用户,但这应该不是问题,因为我使用 PBI PRO 用户作为令牌。如果这是一个问题,如果不是 PRO 用户,我怎么能做到这一点?
嵌入URL我是: https://app.powerbi.com/reportEmbed?reportId=
我没有弄乱嵌入 url 中的配置,所以这也可能是问题所在,但我不知道如何编辑配置。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)