概要

「タイルをアプリに統合する」の手順 1web アプリを Azure AD に登録」で、web アプリを登録して、アプリを Azure Active Directory で認証できるようにします。 この手順では、アクセス トークンおよび Power BI API を使用してダッシュボードを取得します。 ダッシュボードを取得した後、Power BI タイルを取得できます。

Power BI ダッシュボードを取得するためには、ダッシュボードを取得する操作を使用して、Power BI ダッシュボードの一覧を表示します。 ダッシュボードの一覧から、ダッシュボード ID を取得できます。 ダッシュボード ID を取得した後、Power BI タイルを取得できます。

ダッシュボードを取得する操作または他の 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# メソッドを以下に示します。 ダッシュボードを取得した後、タイルを取得できます。 「手順 3: Power BI タイルを取得する」を参照してください。

ダッシュボードの取得

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

次の手順

タイルをアプリに統合するには、タイルを取得する必要があります。 次の手順では、Power BI タイルを取得する方法について学びます。

次の手順 >

参照

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