Introdução

Na etapa 1 de Integrar um bloco 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 dashboard. Depois de obter um dashboard, você poderá obter um bloco do Power BI.

Para obter um dashboard do Power BI, você usa a operação Obter Dashboards que obtém uma lista de dashboards do Power BI. Na lista de dashboards, é possível obter uma ID de dashboard. Depois de obter uma ID de dashboard, é possível obter um bloco do Power BI.

Antes que você possa chamar a operação Obter Dashboards 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 dashboards e blocos 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 dashboard 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 dashboard usando um token de acesso

Agora que você tem um token de acesso, é possível chamar a operação Obter Dashboards. A operação Obter Dashboards retorna uma lista de dashboards. É possível obter um dashboard na lista de dashboards. Veja abaixo um método do C# completo para obter um dashboard. Depois de obter um dashboard, é possível obter um bloco. Veja Etapa 3: Obter um bloco do Power BI.

Obter um dashboard

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

Próxima etapa

Para integrar um bloco em um aplicativo, é necessário obter um bloco. Na próxima etapa, você aprenderá a Obter um bloco do Power BI.

Próxima etapa >

Consulte também

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