gpt4 book ai didi

asp.net-mvc - 获取 Power BI Embedded 的 Azure Power BI 容量的授权代码

转载 作者:行者123 更新时间:2023-12-03 01:41:08 26 4
gpt4 key购买 nike

我以编程方式启动/停止 PowerBI Embedded 的 Azure PowerBI 容量。

单击按钮后,恢复/暂停 Azure 中的 powerbi 嵌入服务。我按照下面的链接执行此操作。

https://learn.microsoft.com/en-us/rest/api/power-bi-embedded/capacities/resume

如何在每次单击按钮时动态获取授权码。

最佳答案

您可以使用 Azure Active Directory Authentication Libraries 获取 Power BI 的访问 token 。获取它的最简单方法是安装 Microsoft.IdentityModel.Clients.ActiveDirectory NuGet 包。然后要获取访问 token ,您需要调用 AcquireTokenAsync方法。以下是您可以执行此操作的方法:

    private static string redirectUri = "https://login.live.com/oauth20_desktop.srf";
private static string resourceUri = "https://analysis.windows.net/powerbi/api";
private static string authorityUri = "https://login.windows.net/common/oauth2/authorize";
// Obtain at https://dev.powerbi.com/apps
private static string clientId = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx";

private static AuthenticationContext authContext = new AuthenticationContext(authorityUri, new TokenCache());

private async void btnAuthenticate_ClickAsync(object sender, EventArgs e)
{
var authenticationResult = await authContext.AcquireTokenAsync(resourceUri, clientId, new Uri(redirectUri), new PlatformParameters(PromptBehavior.Auto));
if (authenticationResult == null)
MessageBox.Show("Call failed.");
else
MessageBox.Show(authenticationResult.AccessToken);
}

最后一个参数是PromptBehavior.Auto。这意味着系统将提示您输入凭据,除非您的身份已保存在此计算机上。此外,当该应用程序未同意访问时,也会提示用户。身份验证以交互方式执行 - 它期望有人在需要时输入凭据。如果您想以非交互方式获取访问 token ,您可以在代码中使用用户名和密码。在这种情况下,获取访问 token 的方法应如下所示:

    private void btnAuthenticate_Click(object sender, EventArgs e)
{
AuthenticationResult authenticationResult = null;

// First check is there token in the cache
try
{
authenticationResult = authContext.AcquireTokenSilentAsync(resourceUri, clientId).Result;
}
catch (AggregateException ex)
{
AdalException ex2 = ex.InnerException as AdalException;
if ((ex2 == null) || (ex2 != null && ex2.ErrorCode != "failed_to_acquire_token_silently"))
{
MessageBox.Show(ex.Message);
return;
}
}

if (authenticationResult == null)
{
var uc = new UserPasswordCredential("<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="473234223507223f262a372b226924282a" rel="noreferrer noopener nofollow">[email protected]</a>", "<EnterStrongPasswordHere>"); // Or parameterless if you want to use Windows integrated auth
try
{
authenticationResult = authContext.AcquireTokenAsync(resourceUri, clientId, uc).Result;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message + ex.InnerException == null ? "" : Environment.NewLine + ex.InnerException.Message);
return;
}
}

if (authenticationResult == null)
MessageBox.Show("Call failed.");
else
MessageBox.Show(authenticationResult.AccessToken);
}

请注意,如果您的应用未获得同意,此调用可能会失败。为此,请转到 Azure 门户 -> Azure Active Directory -> 应用程序注册并找到您的应用程序。然后打开应用程序的设置,并在所需权限中选择 Power BI 服务并单击授予权限: enter image description here

此时,您可以使用此访问 token 执行 REST API 调用或在应用程序中嵌入元素。此 token 允许访问用户可以访问的所有内容,并且当您在门户中注册应用程序时就已允许访问它。但是,如果您想为某个特定报告(或图 block 或仪表板)生成 token ,那么您可以调用 Embed Token 中的一些方法,例如GenerateTokenInGroup (使用 ADAL 访问 token 在生成嵌入 token 的请求 header 中对自己进行身份验证)。

关于asp.net-mvc - 获取 Power BI Embedded 的 Azure Power BI 容量的授权代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53274859/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com