0
我的应用程序(ASP.NET MVC)使用Office 365身份验证,它工作正常。但现在我想在我的应用程序中显示一些强大的BI报告。但是,如果我使用office 365访问令牌访问Power BI Web API,它将失败。有人可以给我这个工作代码?Power BI中的Office 365身份验证
o生成令牌我使用下面的代码。
private static string getAccessToken()
{
var authority = "https://login.windows.net/<tenantId>";
var authContext = new AuthenticationContext(authority);
var clientCredential = new ClientCredential("clientId", "client Secret");
var result = authContext.AcquireToken("https://analysis.windows.net/powerbi/api", clientCredential);
return result.AccessToken;
}
这将返回访问令牌。现在我将使用此访问令牌从电源BI中检索报告详细信息。
protected void getReportsButton_Click(object sender, EventArgs e)
{
var token = getAccessToken();
string responseContent = string.Empty;
//Configure datasets request
System.Net.WebRequest request = System.Net.WebRequest.Create(String.Format("{0}reports", baseUri)) as System.Net.HttpWebRequest;
request.Method = "GET";
request.ContentLength = 0;
request.Headers.Add("Authorization", String.Format("Bearer {0}", token));
//Get datasets response from request.GetResponse()
using (var response = request.GetResponse() as System.Net.HttpWebResponse)
{
//Get reader from response stream
using (var reader = new System.IO.StreamReader(response.GetResponseStream()))
{
responseContent = reader.ReadToEnd();
//Deserialize JSON string
PBIReports PBIReports = JsonConvert.DeserializeObject<PBIReports>(responseContent);
tb_reportsResult.Text = string.Empty;
//Get each Dataset from
foreach (PBIReport rpt in PBIReports.value)
{
tb_reportsResult.Text += String.Format("{0}\t{1}\t{2}\n", rpt.id, rpt.name, rpt.embedUrl);
}
}
}
}
但是这种方法给我一个错误(远程服务器返回错误:(403)禁止)。
谢谢, Erandika。