Introduction

Lors de l’étape 1 de l’intégration d’un rapport 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 rapport.

Pour obtenir un rapport Power BI, vous utilisez l’opération Obtenir des rapports opération qui obtient une liste de rapports Power BI. Dans la liste des rapports, vous pouvez obtenir un rapport embedUrl. Une fois que vous avez un rapport embedUrl, vous pouvez charger un rapport dans un IFrame.

Avant de pouvoir appeler l’opération Obtenir des rapports 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 rapports 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 rapport 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 jeton à l’aide u jeton d’accès

Maintenant que vous disposez d’un jeton d’accès, vous pouvez appeler l’opération Obtenir des rapports. L’opération Obtenir des rapports renvoie une liste de rapports. Vous pouvez obtenir un rapport depuis la liste de rapports. Voici une méthode C# complète pour obtenir un rapport. Une fois que vous avez un rapport, vous pouvez le charger dans un IFrame. Consultez Étape 3 : Charger un rapport Power BI dans un IFrame.

Télécharger le rapport

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

Étape suivante

Pour intégrer un rapport à une application, vous le chargez dans un IFrame Lors de l’étape suivante, vous apprendrez comment Charger un rapport dans un IFrame.

Étape suivante >

Voir aussi

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