使用这篇文章,我成功地创建了一个控制台应用程序,该应用程序将数据验证并将数据推向我自己的PowerBi仪表板。这是在根据说明为我自己的ClientId
和RedirectUri
提供自己的应用程序之后。但是,我有问题,将其转换为我的团队创建的仪表板。
我们在https://{name}.powerbi.com/groups/{group id}/dashboards/{dashboard id}
上有几个仪表板。从上面的帖子中,由于Microsoft.IdentityModel.Clients.ActiveDirectory
的较新版本,要获得AAD令牌的代码稍微修改,为:
private static string GetToken()
{
string clientID = "{Client_ID}";
string redirectUri = "https://login.live.com/oauth20_desktop.srf";
string resourceUri = "https://analysis.windows.net/powerbi/api";
string authorityUri = "https://login.windows.net/common/oauth2/authorize";
AuthenticationContext authContext = new AuthenticationContext(authorityUri);
PlatformParameters parameters = new PlatformParameters(PromptBehavior.Never);
string token = authContext.AcquireTokenAsync(resourceUri, ClientId, new Uri(RedirectUri), parameters).Result.AccessToken;
Console.WriteLine(token);
Console.ReadLine();
return token;
}
由于我不知道客户端,因此我尝试使用groupID,但这会失败。如果我没有可用的客户端,如何以其他方式找到它或进行身份验证?在这种情况下,我怎么知道适当的redirecturi和Resourceuri?
如果您使用相同的帐户登录您的个人仪表板,该帐户用来登录以访问团队的仪表板,则可以在两种情况下重复使用客户端。
在更技术的角度上:如果您自己的PowerBi仪表板和团队都绑在同一Azure AD上,则可以重复使用客户ID。(如果它们与不同的Azure广告绑定,则您可以根据Azure AD注册一个应用程序或或具有单个应用程序注册并将多租户开关设置为True,但希望您被第一种情况所覆盖,不需要为此担心。)
PowerBi权限未范围为特定的仪表板 per-se。相反,如果通过用户委托设置设置,则该应用程序将能够执行所选操作(例如,读取和编写所有数据集)签名用户可以访问。