Introduzione

Nel passaggio 1 della procedura dettagliata Integrare un riquadro in un'app, Registrare un'app Web in Azure AD, viene registrata un'app Web per consentire all'app di eseguire l'autenticazione con Azure Active Directory. In questo passaggio si useranno un token di accesso e l'API Power BI per ottenere un dashboard. Dopo avere ottenuto un dashboard, è possibile ottenere un riquadro di Power BI.

Per ottenere un dashboard di Power BI, usare l'operazione Get Dashboards che recupera un elenco di report di dashboard di Power BI. Dall'elenco dei dashboard è possibile ottenere un ID dashboard. Una volta ottenuto un ID dashboard, è possibile ottenere un riquadro di Power BI.

Prima di poter chiamare l'operazione Get Dashboards o qualsiasi altra operazione di Power BI, è necessario ottenere un token di accesso per l'autenticazione (token di accesso) di Azure Active Directory. Un token di accesso viene usato per consentire all'app di accedere ai dashboard e ai riquadri di Power BI. Per altre informazioni sul flusso di token di accesso di Azure Active Directory, vedere Flusso di concessione del codice di autorizzazione. La sezione successiva illustra come ottenere un token di accesso in un'app Web.

Ottenere un token di accesso per l'autenticazione

Ecco come ottenere un token di accesso per l'autenticazione per chiamare un'operazione di Power BI.

Passaggio 1: Ottenere un codice di autorizzazione da Azure AD

Il primo passaggio per ottenere un token di accesso consiste nell'ottenere un codice di autorizzazione da Azure AD. A questo scopo, creare una stringa di query con le proprietà seguenti e reindirizzarla ad Azure AD.

Stringa di query del codice di autorizzazione

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

Dopo aver creato una stringa di query, reindirizzarla ad Azure AD per ottenere un codice di autorizzazione. Di seguito è riportato un metodo C# completo per creare una stinga di query per il codice di autorizzazione e reindirizzarla ad Azure AD. Nel passaggio successivo si ottiene un token di accesso usando il codice di autorizzazione.

Ottenere il codice di autorizzazione

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

Passaggio 2: Ottenere un token di accesso dal codice di autorizzazione

Per ottenere un token di autorizzazione per l'accesso, nel passaggio 1 si ottiene un codice di autorizzazione da Azure AD. Dopo che Azure AD avrà reindirizzato all'utente l'app Web con un codice di autorizzazione, si userà il codice di autorizzazione per ottenere un token di accesso. Di seguito è riportato un metodo C# per ottenere un token di accesso. Nella sezione successiva si otterrà un dashboard usando un token di accesso.

Ottenere un token di accesso

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

Ottenere un dashboard con un token di accesso

Una volta ottenuto un token di accesso, è possibile chiamare l'operazione Get Dashboards. L'operazione Get Dashboards restituisce un elenco di dashboard. Dall'elenco dei dashboard è possibile ottenere un dashboard. Di seguito è riportato un metodo C# completo per ottenere un dashboard. Una volta ottenuto un dashboard, è possibile ottenere un riquadro. Vedere Passaggio 3: Ottenere un riquadro di Power BI.

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

Passaggio successivo

Per integrare un riquadro in un'app, è necessario ottenerlo. Nel passaggio successivo si apprenderà come Ottenere un riquadro di Power BI.

Passaggio successivo >

Vedere anche

Iscriversi a Power BI
Procedura dettagliata: Integrare un riquadro in un'app
Esempio di integrazione di un riquadro
Configurare l'esempio di integrazione di un riquadro
Flusso di concessione del codice di autorizzazione
Operazione Get Dashboards
Passaggio 3: Ottenere un riquadro di Power BI
Altre domande? Provare la community di Power BI