Введение

В шаге 1 (Регистрация веб-приложения в Azure AD) процедуры интеграции плитки в приложение вы регистрируете веб-приложение, чтобы оно могло пройти проверку подлинности в Azure Active Directory. На этом шаге используется токен доступа и API Power BI для получения панели мониторинга. После получения панели мониторинга можно получить плитку Power BI.

Для получения панели мониторинга Power BI используется операция Получение панелей мониторинга, возвращающая список панелей мониторинга Power BI. В списке панелей мониторинга можно получить идентификатор панели мониторинга. После получения идентификатора панели мониторинга можно получить плитку Power BI.

Перед вызовом операции Получение панелей мониторинга или любой другой операции Power BI следует получить токен доступа для проверки подлинности (токен доступа) Azure Active Directory. Токен доступа позволяет вашему приложению обратиться к панелям мониторинга и плиткам Power BI. Дополнительные сведения об использовании токена доступа Azure Active Directory см. в статье Поток предоставления кода авторизации Azure AD. В следующем разделе описано получение токена доступа в веб-приложении.

Получение токена доступа для проверки подлинности

Далее приведены действия по получению токена доступа для вызова операции 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 для получения кода авторизации. Ниже приведен полный метод C# для создания строки запроса кода авторизации и перенаправления в Azure AD. В следующем шаге вы получаете токен доступа с помощью кода авторизации.

Получение кода авторизации

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 выполняет перенаправление обратно в веб-приложение с использованием кода авторизации, можно воспользоваться кодом авторизации для получения токена доступа. Ниже приведен метод 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 Active Directory
Пошаговое руководство по интеграции плитки в приложение
Пример интеграции плитки
Настройка примера интеграции плитки
Авторизация доступа к веб-приложениям с помощью OAuth 2.0 и Azure Active Directory
Операция получения панелей мониторинга
Шаг 3. Получение плитки Power BI
Появились дополнительные вопросы? Ответы на них см. в сообществе Power BI.