Introducción

En el paso 1 de Integrar un icono en una aplicación, Registrar una aplicación web con Azure AD, registre una aplicación web para que la aplicación pueda realizar la autenticación en Azure Active Directory. En este paso, usará un token de acceso y la API de Power BI para obtener un panel. Después de obtener un panel, puede obtener un icono de Power BI.

Para obtener un panel de Power BI, utilice la operación Obtener paneles que obtiene una lista de paneles de Power BI. En la lista de paneles, puede obtener un id. del panel. Una vez que haya obtenido un id. de panel, puede obtener un icono de Power BI.

Para poder invocar la operación Obtener paneles o cualquier otra operación de Power BI, debe obtener un token de acceso de autenticación de Azure Active Directory (token de acceso). Se utiliza un token de acceso para permitir el acceso de la aplicación a los paneles e iconos de Power BI. Para obtener información acerca del flujo del token de acceso de Azure Active Directory, consulte Flujo de concesión de código de autorización de Azure AD. La sección siguiente muestra cómo obtener un token de acceso en una aplicación web.

Obtener un token de acceso de autenticación

Aquí se indica cómo obtener un token de acceso de autenticación para invocar una operación de Power BI.

Paso 1: Obtener un código de autorización de Azure AD

El primer paso para obtener un token de acceso consiste en obtener un código de autorización de Azure AD. Para ello, cree una cadena de consulta con las siguientes propiedades y vuelva a Azure AD.

Cadena de consulta del código de autorización

var @params = new NameValueCollection
{
    //Azure AD will return an authorization code.
    {"response_type", "code"},

    //Client ID is used by the application to identify themselves to the users that they are requesting permissions from.
    //You get the client id when you register your Azure app.
    {"client_id", Settings.Default.ClientID},

    //Resource uri to the Power BI resource to be authorized
    //The resource uri is hard-coded for sample purposes
    {"resource", "https://analysis.windows.net/powerbi/api"},

    //After app authenticates, Azure AD will redirect back to the web app. In this sample, Azure AD redirects back
    //to Default page (Default.aspx).
    { "redirect_uri", Settings.Default.RedirectUri}
};

Después de crear una cadena de consulta, vuelva a Azure AD para obtener un código de autorización. A continuación se muestra un método de C# completo para crear una cadena de consulta de código de autorización y volver a Azure AD. En el paso siguiente, obtendrá un token de acceso con el código de autorización.

Obtener un código de autorización

public void GetAuthorizationCode()
{
    //NOTE: Values are hard-coded for sample purposes.
    //Create a query string
    //Create a sign-in NameValueCollection for query string
    var @params = new NameValueCollection
    {
        //Azure AD will return an authorization code.
        {"response_type", "code"},

        //Client ID is used by the application to identify themselves to the users that they are requesting permissions from.
        //You get the client id when you register your Azure app.
        {"client_id", Settings.Default.ClientID},

        //Resource uri to the Power BI resource to be authorized
        //The resource uri is hard-coded for sample purposes
        {"resource", "https://analysis.windows.net/powerbi/api"},

        //After app authenticates, Azure AD will redirect back to the web app. In this sample, Azure AD redirects back
        //to Default page (Default.aspx).
        { "redirect_uri", Settings.Default.RedirectUri}
    };

    //Create sign-in query string
    var queryString = HttpUtility.ParseQueryString(string.Empty);
    queryString.Add(@params);

    //Redirect to Azure AD Authority
    //  Authority Uri is an Azure resource that takes a client id and client secret to get an Access token
    //  QueryString contains
    //      response_type of "code"
    //      client_id that identifies your app in Azure AD
    //      resource which is the Power BI API resource to be authorized
    //      redirect_uri which is the uri that Azure AD will redirect back to after it authenticates

    //Redirect to Azure AD to get an authorization code
    Response.Redirect(String.Format("https://login.windows.net/common/oauth2/authorize?{0}", queryString));
}

Paso 2: Obtener un token de acceso del código de autorización

En el paso 1, para obtener un token de acceso de autenticación, obtendrá un código de autorización de Azure AD. Una vez que Azure AD vuelve a su aplicación web con un código de autorización, utiliza el código de autorización para obtener un token de acceso. A continuación se muestra un método de C# para obtener un token de acceso. En la sección siguiente, obtendrá un panel mediante un token de acceso.

Obtener un token de acceso

public string GetAccessToken(string authorizationCode, string clientID, string clientSecret, string redirectUri)
{
    //Redirect uri must match the redirect_uri used when requesting Authorization code.
    //Note: If you use a redirect back to Default, as in this sample, you need to add a forward slash
    //such as http://localhost:13526/

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

    //Values are hard-coded for sample purposes
    string authority = "https://login.windows.net/common/oauth2/authorize";
    AuthenticationContext AC = new AuthenticationContext(authority, TC);
    ClientCredential cc = new ClientCredential(clientID, clientSecret);

    //Set token from authentication result
    return AC.AcquireTokenByAuthorizationCode(
        authorizationCode,
        new Uri(redirectUri), cc).AccessToken;
}

Obtener un panel con un token de acceso

Ahora que tiene un token de acceso, puede invocar la operación Obtener paneles. La operación Obtener paneles devuelve una lista de paneles. Puede obtener un panel de la lista de paneles. A continuación se muestra un método de C# completo para obtener un panel. Una vez que haya obtenido un panel, puede obtener un icono. Consulte Paso 3: Obtener un icono de Power BI.

Obtener panel

//Get a dashboard id.
protected string GetDashboard(int index)
{
    string dashboardId = string.Empty;

    //Configure tiles request
    System.Net.WebRequest request = System.Net.WebRequest.Create(
        String.Format("{0}Dashboards",
        baseUri)) as System.Net.HttpWebRequest;

    request.Method = "GET";
    request.ContentLength = 0;
    request.Headers.Add("Authorization", String.Format("Bearer {0}", accessToken.Value));

    //Get dashboards response from request.GetResponse()
    using (var response = request.GetResponse() as System.Net.HttpWebResponse)
    {
        //Get reader from response stream
        using (var reader = new System.IO.StreamReader(response.GetResponseStream()))
        {
            //Deserialize JSON string
            PBIDashboards dashboards = JsonConvert.DeserializeObject<PBIDashboards>(reader.ReadToEnd());

            //Sample assumes at least one Dashboard with one Tile.
            //You could write an app that lists all tiles in a dashboard
            dashboardId = dashboards.value[index].id;
        }
    }

    return dashboardId;
}

//Power BI Dashboards used to deserialize the Get Dashboards response.
public class PBIDashboards
{
    public PBIDashboard[] value { get; set; }
}
public class PBIDashboard
{
    public string id { get; set; }
    public string displayName { get; set; }
}

Paso siguiente

Para integrar un icono en una aplicación, necesita obtener un icono. En el paso siguiente aprenderá a Obtener un icono de Power BI.

Paso siguiente >

Vea también

Suscribirse en Power BI
Tutorial Integrar un icono en una aplicación
Integrar un ejemplo de icono
Configurar Integrar un ejemplo de icono
Flujo de concesión de código de autorización de Azure AD
Operación Obtener paneles
Paso 3: Obtener un icono de Power BI
¿Tiene más preguntas? Pruebe la comunidad de Power BI