Introducción

En el paso 1 de Integrar un informe 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 informe.

Para obtener un informe de Power BI, utilice la operación Obtener informes que obtiene una lista de informes de Power BI. En la lista de informes, puede obtener un informe embedUrl. Una vez que tenga el informe embedUrl, puede cargar un informe en un IFrame.

Para poder invocar la operación Obtener informes 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 informes 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 informe 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 informe con un token de acceso

Ahora que tiene un token de acceso, puede llamar a la operación Obtener informes. La operación Obtener informes devuelve una lista de informes. Puede obtener un informe de la lista de informes. A continuación se muestra un método de C# completo para obtener un informe. Una vez que tenga el informe, puede cargarlo en un IFrame. Consulte Paso 3: Cargar un informe de Power BI en un IFrame.

Obtener un informe

protected void GetReport(int index)
{
    //Configure Reports request
    System.Net.WebRequest request = System.Net.WebRequest.Create(
        String.Format("{0}/Reports",
        baseUri)) as System.Net.HttpWebRequest;

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

    //Get Reports 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
            PBIReports Reports = JsonConvert.DeserializeObject<PBIReports>(reader.ReadToEnd());

            //Sample assumes at least one Report.
            //You could write an app that lists all Reports
            if (Reports.value.Length > 0)
                ReportEmbedUrl.Text = Reports.value[index].embedUrl;
        }
    }
}

//Power BI Reports used to deserialize the Get Reports response.
public class PBIReports
{
    public PBIReport[] value { get; set; }
}
public class PBIReport
{
    public string id { get; set; }
    public string name { get; set; }
    public string webUrl { get; set; }
    public string embedUrl { get; set; }
}

Paso siguiente

Para integrar un informe en una aplicación, cargue un informe en un IFrame En el paso siguiente, aprenderá cómo Cargar un informe en un IFrame.

Paso siguiente >

Vea también

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