Einführung

In Schritt 1 zum Integrieren eines Berichts in eine App (Registrieren einer Web-App in Azure AD) registrieren Sie eine Web-App, damit Ihre App sich bei Azure Active Directory authentifizieren kann. In diesem Schritt verwenden Sie ein Zugriffstoken und die Power BI-API, um einen Bericht abzurufen.

Zum Abrufen eines Power BI-Berichts verwenden Sie den Vorgang Get Reports (Berichte abrufen), um eine Liste der Power BI-Berichte abzurufen. Aus der Liste der Berichte können Sie eine embedUrl für den Bericht abrufen. Wenn Sie die embedUrl eines Berichts haben, können Sie den Bericht in einem IFrame laden.

Damit Sie den Vorgang Get Reports (Berichte abrufen) oder einen anderen Power BI-Vorgang aufrufen können, benötigen Sie ein Azure Active Directory-Authentifizierungszugriffstoken (Zugriffstoken). Über ein Zugriffstoken erhält Ihre App Zugriff auf Power BI-Berichte. Weitere Informationen zum Azure Active Directory-Fluss (Azure AD) für Zugriffstoken finden Sie unter Authorization Code Grant-Datenfluss. Im nächsten Abschnitt erfahren Sie, wie Sie in einer Web-App ein Zugriffstoken abrufen.

Abrufen eines Authentifizierungszugriffstokens

Nachstehend wird das Abrufen eines Authentifizierungszugriffstokens zum Aufrufen eines Power BI-Vorgangs erläutert.

Schritt 1: Abrufen eines Autorisierungscodes von Azure AD

Der erste Schritt beim Abrufen eines Zugriffstokens ist das Abrufen eines Autorisierungscodes von Azure AD. Zu diesem Zweck erstellen Sie eine Abfragezeichenfolge mit den folgenden Eigenschaften und leiten diese weiter an Azure AD.

Abfragezeichenfolge für den Autorisierungscode

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

Nachdem Sie eine Abfragezeichenfolge erstellt haben, leiten Sie diese weiter an Azure AD, um einen Autorisierungscode abzurufen. Im Folgenden finden Sie eine vollständige C#-Methode zum Erstellen einer Abfragezeichenfolge für den Autorisierungscode und leiten diese an Azure AD weiter. Im nächsten Schritt erhalten Sie ein Zugriffstoken mithilfe des Autorisierungscodes.

Abrufen des Autorisierungscodes

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

Schritt 2: Abrufen eines Zugriffstokens über den Autorisierungscode

Im ersten Schritt zum Abrufen eines Autorisierungszugriffstokens erhalten Sie von Azure AD einen Autorisierungscode. Nach der Weiterleitung durch Azure AD mit einem Autorisierungscode an Ihre Web-App verwenden Sie den Autorisierungscode, um ein Zugriffstoken abzurufen. Im Folgenden finden Sie eine C#-Methode zum Abrufen eines Zugriffstokens. Im nächsten Abschnitt rufen Sie einen Bericht über ein Zugriffstoken ab.

Abrufen eines Zugriffstokens

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

Abrufen von Berichten über ein Zugriffstoken

Mit dem nun vorliegenden Zugriffstoken können Sie den Vorgang Get Reports (Berichte abrufen) aufrufen. Der Vorgang Get Reports (Berichte abrufen) gibt eine Liste der Berichte zurück. Anhand der Liste der Berichte können Sie einen Bericht abrufen. Im Folgenden finden Sie eine vollständige C#-Methode zum Abrufen eines Berichts. Sobald ein Bericht vorliegt, können Sie ihn in einem IFrame laden. Informationen hierzu finden Sie in Schritt 3: Laden eines Power BI-Berichts in einem IFrame.

Bericht abrufen

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

Nächster Schritt

Um einen Bericht in eine App zu integrieren, muss der Bericht zunächst in ein IFrame integriert werden. Im nächsten Schritt erfahren Sie Einzelheiten über das Laden eines Berichts in einem IFrame.

Nächster Schritt >

Siehe auch

Registrieren bei Power BI
Exemplarische Vorgehensweise zum Integrieren eines Berichts in eine App
Beispiel zum Integrieren eines Berichts
Konfigurieren des Beispiels zum Integrieren eines Berichts
Azure AD-Authorization Code Grant-Datenfluss
Vorgang „Berichte abrufen“
Schritt 3: Laden eines Power BI-Berichts in einem IFrame
Weitere Fragen? Wenden Sie sich an die Power BI-Community