Je suis en train d'intégrer un rapport bi électrique en page Web en utilisant l'échantillon fourni par this link.Embedding Power Report Bi pour les utilisateurs non PBI
Dans cet exemple, je l'ai remplacé tous les numéros de client et mot de passe nom d'utilisateur de mon compte pro .
J'ai défini le type d'application native dans Enregistrement d'application. Quand je suis en train d'obtenir Intégrer Token, erreur suivant arrive:
J'ai donné à la suite des autorisations à mon application:
Voici mon code:
public async Task<ActionResult> EmbedReport()
{
// Create a user password credentials.
UserPasswordCredential UserCredentials = new UserPasswordCredential(Username, Password);
AuthenticationContext AuthContext = new AuthenticationContext(AuthorityUrl, false);
// Authenticate using created credentials
//AuthenticationResult AuthResult = await AuthContext.AcquireTokenAsync(ResourceUrl, clientCred);
AuthenticationResult AuthResult = await AuthContext.AcquireTokenAsync(ResourceUrl, ClientId, UserCredentials);
if (AuthResult == null)
{
return View(new EmbedConfig()
{
ErrorMessage = "Authentication Failed."
});
}
var tokenCredentials = new TokenCredentials(AuthResult.AccessToken, "Bearer");
// Create a Power BI Client object. It will be used to call Power BI APIs.
using (var client = new PowerBIClient(new Uri(ApiUrl), tokenCredentials))
{
// Get a list of reports.
var reports = client.Reports.GetReports();
// Get the first report in the group.
var report = reports.Value.FirstOrDefault();
if (report == null)
{
return View(new EmbedConfig()
{
ErrorMessage = "Group has no reports."
});
}
string accessLevel = "View";
// Generate Embed Token.
var generateTokenRequestParameters = new GenerateTokenRequest(accessLevel, report.DatasetId,false);
var tokenResponse = client.Reports.GenerateToken(report.Id, generateTokenRequestParameters);
if (tokenResponse == null)
{
return View(new EmbedConfig()
{
ErrorMessage = "Failed to generate embed token."
});
}
// Generate Embed Configuration.
var embedConfig = new EmbedConfig()
{
EmbedToken = tokenResponse,
EmbedUrl = report.EmbedUrl,
Id = report.Id
};
return View(embedConfig);
}
}
Et pour clarifier pour quelqu'un d'autre ... Vous vous connectez au portail et "Grant Permissions" comme l'utilisateur que vous voulez "usurper" de l'application à Power BI. Vous n'avez besoin de le faire que si vous n'avez pas d'application AAD exposée via l'interface graphique (qui vous permettrait de confirmer le consentement plus naturellement). – Jmoney38
Juste une autre référence utile car cela peut être difficile à diagnostiquer: https: // github.com/Microsoft/PowerBI-Developer-Samples/issues/19 – Jmoney38