Nous avons essayé de suivre this Power BI article afin d'intégrer des rapports/tableaux de bord dans notre produit SaaS. Plus précisément, nous sommes bloqués à l'étape 3, «Créer le jeton d'intégration».Réception d'un 'Forbidden (403)' lors de la connexion à l'API Power BI
Nous sommes en mesure d'obtenir un jeton porteur très bien, mais lorsque la demande de récupérer les rapports est finalement soumis à l'API que nous recevons: Opération renvoyé un code d'état non valide « Interdit »
private static string clientId = "...";
private static string secretKey = "...";
private static string groupId = "...";
static void Main(string[] args)
{
string resourceUri = "https://analysis.windows.net/powerbi/api";
string authorityUri = "https://login.windows.net/common/oauth2/authorize";
ClientCredential credential = new ClientCredential(clientId, secretKey);
AuthenticationContext authContext = new AuthenticationContext(authorityUri);
var token = authContext.AcquireTokenAsync(resourceUri, credential).Result.AccessToken;
var tokenCredentials = new TokenCredentials(token, "Bearer");
using (var client = new PowerBIClient(new Uri("https://api.powerbi.com/"), tokenCredentials))
{
var reports = client.Reports.GetReportsInGroupWithHttpMessagesAsync(groupId);
// !!! - Here's where the exception is thrown
// !!! -- Operation returned an invalid status code 'Forbidden'
var report = reports.Result.Body;
}
}
Voici ce que nous avons essayé:
- Les autorisations requises ont été accordées (nous avons vérifié de tous pour que nous ne sommes pas quelque chose qui manque). Cela inclut Windows Azure Active Directory/Power BI Service.
- Nous avons confirmé que l'ID du client, la clé secrète et l'ID du groupe sont corrects.
- L'espace de travail de Power BI est privé, mais nous avons essayé de le rendre public pour être sûr que cela n'a pas d'importance.
- Enfin, le jeton que nous recevons via le code correspond au jeton sur powerbi.com.
Merci Nan Yu, cependant, cela obtient exactement le même jeton que j'ai obtenu dans mon échantillon. J'ai essayé l'exemple que vous avez suggéré précédemment mais j'ai reçu une erreur "Le corps de la requête doit contenir le paramètre suivant: 'client_secret ou client_assertion' Les suggestions en ligne suggèrent de créer une 'Native App', mais cela aussi me laisse une erreur (Unautorized – leemac
Nous ne pouvons utiliser le flux propriétaire de la ressource d'un client natif.Un client confidentiel, comme un site Web, ne peut pas utiliser les informations d'identification de l'utilisateur direct.Quel est le message d'erreur détaillé Lorsque vous obtenez l'erreur "UnAuthorized" –
Merci Nan Nous avons parlé avec un représentant de Microsoft et expliqué les détails ci-dessus un peu plus en détail pour nous.Nous avons dû utiliser une application client native et non une application Web comme indiqué dans les didacticiels. Très déroutant, mais cela semble fonctionner. Ce qui nous a décontenancés, c'est qu'il est écrit "Native (desktop/mobile/etc)" lors de l'enregistrement de l'application. – leemac