概要

「レポートをアプリに統合する」の 手順 1Azure AD Web でアプリを登録で、Web アプリを登録して、アプリを Azure Active Directory で認証できるようにします。 この手順では、アクセス トークンおよび Power BI API を使用してレポートを取得します。

Power BI レポートを取得するには、レポートの取得操作を使用して、Power BI レポートの一覧を取得します。 レポートの一覧から、埋め込み URL レポートを取得できます。 埋め込み URL レポートを作成したら、レポートを IFrame に読み込むことができます。

レポートの取得操作または他の Power BI 操作を呼び出す前に、Azure Active Directory の認証アクセス トークン (アクセス トークン) を取得する必要があります。 アクセス トークンは、アプリの Power BI レポートへのアクセスを許可するために使用されます。 Azure Active Directory のアクセス トークン フローの詳細については、「Azure AD 認証コード付与フロー」を参照してください。 次のセクションでは、web アプリからアクセス トークンを取得する方法を示します。

認証アクセス トークンを取得する

ここでは、Power BI 操作を呼び出すための認証アクセス トークンを取得する方法を説明します。

手順 1: Azure AD から認証コードを取得する

アクセス トークンを取得する最初の手順は、Azure AD から認証コードを取得することです。 この手順を行うには、次のプロパティを持つクエリ文字列を作成して、Azure AD にリダイレクトします。

認証コードのクエリ文字列

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

クエリ文字列を構築した後、Azure AD にリダイレクトして認証コードを取得します。 認証コード クエリ文字列を構築し、Azure AD にリダイレクトするための完全な C# メソッドを以下に示します。 次の手順では、認証コードを使用してアクセス トークンを取得 します。

認証コードの取得

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

手順 2: 認証コードからアクセス トークンを取得する

「認証アクセス トークンを取得する」の手順 1 で、Azure AD から認証コードを取得します。 Azure AD によって認証コードとともに web アプリにリダイレクトされた後、認証コードを使用してアクセス トークンを取得します。 C# メソッドによるアクセス トークンの取得を以下に示します。 次のセクションでは、アクセス トークンを使用してレポートを取得 します。

アクセス トークンの取得

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

アクセス トークンを使用してレポートを取得する

アクセス トークンを取得したなら、レポートの取得操作を呼び出すことができます。 レポートを取得する操作により、レポートの一覧が返されます。 レポートの一覧からレポートを取得できます。 レポートを取得するための完全な C# メソッドを以下に示します。 レポートを取得したら、それを IFrame に読み込むことができます。 「手順 3: IFrame に Power BI レポートを読み込む」を参照してください。

レポートの取得

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

次の手順

レポートをアプリに統合するには、レポートを IFrame に読み込みます。 次の手順では、レポートを IFrame に読み込む方法について説明します。

次の手順 >

参照

Power BI にサインアップする
レポートをアプリに統合するチュートリアル
レポートの統合サンプル
レポートの統合サンプルを構成する
Azure AD 認証コード付与フロー
レポートの取得操作
手順 3: Power BI レポートを IFrame に読み込む
他にわからないことがある場合は、 Power BI コミュニティを利用してください