Introdução

Na etapa 1 de Integrar um relatório em um aplicativo, Registrar um aplicativo Web no Azure AD, você registra um aplicativo Web para que seu aplicativo possa ser autenticado no Azure Active Directory. Nesta etapa, você usa um token de acesso e a API do Power BI para obter um relatório.

Para obter um relatório do Power BI, você usa a operação Obter Relatórios que obtém uma lista de relatórios do Power BI. Na lista de relatórios, é possível obter uma embedUrl do relatório. Depois de obter uma embedUrl do relatório, é possível carregar um relatório em um IFrame.

Antes que você possa chamar a operação Obter Relatórios ou qualquer outra operação do Power BI, é necessário obter um token de acesso de autenticação (token de acesso) do Azure Active Directory. Um token de acesso é usado para permitir que seu aplicativo acesse os relatórios do Power BI. Para saber mais sobre o fluxo do token de acesso do Azure Active Directory, veja Fluxo de concessão de código de autorização do Azure AD. A próxima seção mostra como obter um token de acesso em um aplicativo Web.

Obter um token de acesso de autenticação

Veja como obter um token de acesso de autenticação para chamar uma operação do Power BI.

Etapa 1: Obter um código de autorização do Azure AD

A primeira etapa para obter um token de acesso é obter um código de autorização do Azure AD. Para fazer isso, você constrói uma cadeia de caracteres de consulta com as propriedades a seguir e a redireciona para o Azure AD.

Cadeia de caracteres de consulta do código de autorização

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}
};

Depois de construir uma cadeia de caracteres de consulta, você a redireciona para o Azure AD para obter um código de autorização. Veja abaixo um método em C# completo para construir uma cadeia de caracteres de consulta do código de autorização e redirecioná-la para o Azure AD. Na próxima etapa, você obtém um token de acesso usando o código de autorização.

Obter o código de autorização

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));
}

Etapa 2: Obter um token de acesso do código de autorização

Na etapa 1, para obter um token de acesso de autenticação, você obtém um código de autorização do Azure AD. Depois que o Azure AD redirecionar de volta para seu aplicativo Web com um código de autorização, você usa o código de autorização para obter um token de acesso. Veja abaixo um método em C# para obter um token de acesso. Na próxima seção, você obtém um relatório usando um token de acesso.

Obter token de acesso

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;
}

Obter um relatório usando um token de acesso

Agora que você tem um token de acesso, é possível chamar a operação Obter Relatórios. A operação Obter Relatórios retorna uma lista de relatórios. É possível obter um relatório na lista de relatórios. Veja abaixo um método do C# completo para obter um relatório. Depois de obter um relatório, é possível carregá-lo em um IFrame. Veja Etapa 3: Carregar um relatório do Power BI em um IFrame.

Obter relatório

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; }
}

Próxima etapa

Para integrar um relatório em um aplicativo, você carrega um relatório em um IFrame. Na próxima etapa, você aprenderá a Carregar um relatório em um IFrame.

Próxima etapa >

Consulte também

Inscrever-se no Power BI
Passo a passo para integrar um relatório em um aplicativo
Integrar uma amostra de relatório
Configurar a amostra Integrar um relatório
Fluxo de concessão de código de autorização do Azure AD
Operação Obter relatórios
Etapa 3: Carregar um relatório do Power BI em um IFrame
Mais perguntas? Experimente a Comunidade do Power BI