Introduction

Lors de l’étape 1 de l’intégration d’une vignette dans une application, Inscrire une application web avec Azure AD, vous inscrivez une application web pour que votre application puisse s’authentifier sur Azure Active Directory. Lors de cette étape, vous utilisez un jeton d’accès, et l’API Power BI pour obtenir un tableau de bord. Une fois que vous obtenez un tableau de bord, vous pouvez obtenir une vignette Power BI.

Pour obtenir un tableau de bord Power BI, vous utilisez l’opération Obtenir des tableaux de bord opération qui obtient une liste de tableaux de bord Power BI. Dans la liste des tableaux de bord, vous pouvez obtenir un ID de tableau de bord. Une fois que vous obtenez un ID de tableau de bord, vous pouvez obtenir une vignette Power BI.

Avant de pouvoir appeler l’opération Obtenir des tableaux de bord ou toute autre opération Power BI, vous devez obtenir un jeton d’accès d’authentification Azure Active Directory (jeton d’accès). Un jeton d’accès est utilisé pour autoriser l’accès de votre application aux tableaux de bord et vignettes Power BI. Pour en savoir plus sur le flux de jetons d’accès dans Azure Active Directory, consultez Flux d’octroi d’un code d’autorisation Azure AD. La section suivante vous montre comment obtenir un jeton d’accès dans une application web.

Obtenir un jeton d’accès d’authentification

Voici comment obtenir un jeton d’accès d’authentification pour appeler une opération Power BI.

Étape 1 : obtenir un code d’autorisation depuis Azure AD

La première étape pour obtenir un jeton d’accès est de vous procurer un code d’autorisation depuis Azure AD. Pour ce faire, vous créez une chaîne de requête avec les propriétés suivantes, et redirigez vers Azure AD.

Chaîne de requête de code d’autorisation

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

Après avoir créé une chaîne de requête, vous redirigez vers Azure AD pour obtenir un code d’autorisation. Voici une méthode C# complète pour créer une chaîne de requête de code d’autorisation et rediriger vers Azure AD. Lors de l’étape suivante, vous obtenez un jeton d’accès à l’aide du code d’autorisation.

Obtenir un code d’autorisation

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

Étape 2 : obtenir un jeton accès à partir du code d’autorisation

Lors de l’étape 1 pour obtenir un jeton d’accès d’authentification, vous récupérez un code d’autorisation depuis Azure AD. Une fois qu’Azure AD vous redirige vers votre application web avec un code d’autorisation, vous utilisez le code d’autorisation pour obtenir un jeton d’accès. Voici une méthode C# pour obtenir un jeton d’accès. Dans la section suivante, vous obtenez un tableau de bord en utilisant un jeton d’accès.

Obtenir un jeton d’accès

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

Obtenir un tableau de bord avec un jeton d’accès

Maintenant que vous disposez d’un jeton d’accès, vous pouvez appeler l’opération Obtenir des tableaux de bord. L’opération Obtenir des tableaux de bord renvoie la liste des tableaux de bord. Vous obtenez un tableau de bord à partir de la liste de tableaux de bord. Voici une méthode C# complète pour obtenir un tableau de bord. Une fois que vous obtenez un tableau de bord, vous pouvez obtenir une vignette. Voir Étape 3 : Obtenir une vignette Power BI.

Obtenir un tableau de bord

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

Étape suivante

Pour intégrer une vignette à une application, vous devez obtenir une vignette. Lors de l’étape suivante, vous apprendrez à Obtenir une vignette Power BI.

Étape suivante >

Voir aussi

S’inscrire à Power BI
Procédure pas à pas Intégrer une vignette à une application
Exemple d’intégration de vignette
Configurer l’exemple d’intégration de vignette
Flux d’octroi d’un code d’autorisation Azure AD
Opération Obtenir des tableaux de bord
Étape 3 : Obtenir une vignette Power BI
D’autres questions ? Posez vos questions à la communauté Power BI