簡介

在將磚整合到應用程式的 步驟 1使用 Azure AD 註冊 Web 應用程式 中,您會註冊一個 Web 應用程式,以便您的應用程式向 Azure Active Directory 驗證。 在此步驟中,您會使用存取權杖Power BI API 以取得儀表板。 取得儀表板之後,您就可以取得一個 Power BI 磚。

若要取得 Power BI 儀表板,請使用 取得儀表板 作業以查看 Power BI 儀表板清單。 您可以從儀表板清單中取得儀表板識別碼。 有了儀表板識別碼之後,您就可以取得一個 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 社群