无法获得电源双访问令牌

时间:2017-12-13 10:12:37

标签: javascript angular powerbi powerbi-embedded

我正在尝试使用JavaScript / angular获取访问令牌,但我收到错误请求资源上没有'Access-Control-Allow-Origin'标头,而我正在调用api使用Postman获取响应代码200来访问令牌。

Postman api call for token

从角度调用api时控制台出错,但网络标签中的响应代码为200

error response on console

Response code 200 in network tab

我无法在角度代码中获取Power BI访问令牌,并且没有适当的文档来访问权限BI中没有基于gui身份验证的令牌。

1 个答案:

答案 0 :(得分:-1)

如果您使用的是C#.Net,您可以查看有关如何获取Power BI AAD令牌的官方文档: https://docs.microsoft.com/en-us/power-bi/developer/get-azuread-access-token

using Microsoft.IdentityModel.Clients.ActiveDirectory;

protected void Page_Load(object sender, EventArgs e)
{
    //Redirect uri must match the redirect_uri used when requesting Authorization code.
    string redirectUri = String.Format("{0}Redirect", Properties.Settings.Default.RedirectUrl);
    string authorityUri = Properties.Settings.Default.AADAuthorityUri;

    // Get the auth code
    string code = Request.Params.GetValues(0)[0];

    // Get auth token from auth code
    TokenCache TC = new TokenCache();

    AuthenticationContext AC = new AuthenticationContext(authorityUri, TC);
    ClientCredential cc = new ClientCredential
        (Properties.Settings.Default.ClientID,
        Properties.Settings.Default.ClientSecret);

    AuthenticationResult AR = AC.AcquireTokenByAuthorizationCode(code, new Uri(redirectUri), cc);

    //Set Session "authResult" index string to the AuthenticationResult
    Session[_Default.authResultString] = AR;

    //Redirect back to Default.aspx
    Response.Redirect("/Default.aspx");
}

如果您正在使用任何其他语言,您可以使用合适的AAD库(例如,对于js \ node.js使用ADAL.js),或者只使用相同属性对AAD端点进行HTTP调用。