经过一天和几个小时的PowerBI搜索并阅读PowerBI webapp的样本后,我遇到了一堵墙,改变底层代码的最佳方法是什么
var tokenCache = new TokenCache();
var authContext = new AuthenticationContext(authorityUri, tokenCache);
var token = authContext.AcquireToken(resourceUri, clientId, new Uri(redirectUri)).AccessToken;
获取power Bi rest API的访问权限 Sliently 。我知道有一个AcquireTokenSlientAsync,但当我将我的应用程序注册为WebApp,包括cliendID和clientSecret时,它给我一个403错误。
目前,我的网络应用程序在dev powerbi上注册为NativeApp,并在每个请求上获取令牌。但它每次都会弹出。
因为我正在使用访问令牌在网页上嵌入各种报告,所以如果有人能够告诉我如何在不使用用户名和密码的情况下轻松获取令牌,那将会很棒。
我尝试过使用var token = authContext.AcquireTokenSlientAsync(resourceUri, clientCredential);
非常感谢任何见解。
答案 0 :(得分:0)
根据您的评论,您可以使用"刷新"您获得初始身份验证的令牌。该初始令牌应包括刷新令牌,刷新令牌可以使用" AcquireTokenByRefreshToken"方法并传入新资源(power bi api),您需要一个访问令牌。
AuthenticationContext authContext = new AuthenticationContext(Authority, new AdalTokenCache(claim.Value)); var refresh_token = authContext.TokenCache.ReadItems().FirstOrDefault().RefreshToken; ClientCredential credential = new ClientCredential(clientId, appKey); var resp = authContext.AcquireTokenByRefreshToken(refresh_token, credential, "https://analysis.windows.net/powerbi/api");
希望这有帮助。