Acceso a datos de análisis mediante servicios de Store

Usa la API de análisis de Microsoft Store para recuperar mediante programación los datos de análisis de las aplicaciones registradas en tu cuenta del Centro de partners de Windows o de tu organización. Esta API permite recuperar los datos respecto a las adquisiciones de aplicaciones y de complementos (conocidas también como producto desde la aplicación o IAP), errores, valoraciones de la aplicación y opiniones. Esta API usa Azure Active Directory (Azure AD) para autenticar las llamadas provenientes de la aplicación o el servicio.

Los siguientes pasos describen el proceso de principio a fin:

  1. Asegúrate de que se hayan completado todos los requisitos previos.
  2. Antes de llamar a un método en la API de análisis de Microsoft Store, obtenga un token de acceso de Azure AD. Después de obtener un token, tienes 60 minutos para usar este token en llamadas a la API de análisis de Microsoft Store antes de que expire el token. Después de que el token expire, puedes generar uno nuevo.
  3. Llame a la API de análisis de Microsoft Store.

Paso 1: Completar los requisitos previos para usar la API de análisis de Microsoft Store

Antes de empezar a escribir código para llamar a la API de análisis de Microsoft Store, asegúrese de que ha completado los siguientes requisitos previos.

  • Usted (o su organización) tiene que tener un directorio de Azure AD y el permiso de Administrador global para el directorio. Si usa Microsoft 365 u otros servicios empresariales de Microsoft, ya tiene el directorio de Azure AD. De lo contrario, puede crear una nueva instancia de Azure AD en el Centro de partners sin cargos adicionales.

  • Debe asociar una aplicación de Azure AD con su cuenta del Centro de partners, recuperar el identificador de inquilino y el identificador de cliente de la aplicación y generar una clave. La aplicación de Azure AD representa la aplicación o servicio desde la que quieres llamar a la API de análisis de Microsoft Store. Necesita el identificador de inquilino, el identificador de cliente y la clave para obtener un token de acceso de Azure AD para pasar a la API.

    Nota

    Solo tiene que realizar esta tarea una vez. Una vez que tenga el identificador de inquilino, el identificador de cliente y la clave, puede volver a usarlos cada vez que tenga que crear un nuevo token de acceso de Azure AD.

Para asociar una aplicación de Azure AD a la cuenta del Centro de partners y recuperar los valores necesarios:

  1. En el Centro de partners, asocie la cuenta del Centro de partners de la organización con el directorio de Azure AD de la organización.

  2. A continuación, en la página Usuarios de la sección Configuración de la cuenta del Centro de partners, agregue la aplicación de Azure AD que representa la aplicación o el servicio que usará para acceder a los datos de análisis de la cuenta del Centro de partners. Asegúrese de asignar a esta aplicación el rol Administrador. Si la aplicación aún no existe en el directorio de Azure AD, puede crear una nueva aplicación de Azure AD en el Centro de partners.

  3. Vuelva a la página Usuarios, haga clic en el nombre de la aplicación de Azure AD para ir a la configuración de la aplicación y, a continuación, copie los valores de Identificador de inquilino e Identificador de cliente.

  4. Haga clic en Agregar nueva clave. En la pantalla siguiente, copie el valor de Clave. Después de salir de esta página no podrá tener acceso de nuevo a esta información. Para más información, consulte Administrar claves para una aplicación de Azure AD.

Paso 2: Obtención de un token de acceso de Azure AD

Antes de llamar a cualquiera de los métodos de la API de análisis de Microsoft Store, primero debe obtener un token de acceso de Azure AD que pase al encabezado authorization de cada método de la API. Una vez que haya obtenido un token de acceso, tiene 60 minutos para usarlo antes de que expire. Después de que el token expire, puedes actualizar el token para que puedas continuar usándolo en llamadas adicionales a la API.

Para obtener el token de acceso, sigue las instrucciones en Llamadas de servicio a servicio utilizando las credenciales del cliente para enviar un HTTP POST al punto de conexión https://login.microsoftonline.com/<tenant_id>/oauth2/token. Este es un ejemplo de solicitud.

POST https://login.microsoftonline.com/<tenant_id>/oauth2/token HTTP/1.1
Host: login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded; charset=utf-8

grant_type=client_credentials
&client_id=<your_client_id>
&client_secret=<your_client_secret>
&resource=https://manage.devcenter.microsoft.com

Para el valor de tenant_id en el URI POST y los parámetros client_id y client_secret , especifique el identificador de inquilino, el identificador de cliente y la clave de la aplicación que recuperó del Centro de partners en la sección anterior. Para el parámetro resource, tiene que especificar https://manage.devcenter.microsoft.com.

Una vez que expire el token de acceso, puedes actualizarlo siguiendo las instrucciones que se muestran aquí.

> [!NOTE]
> ResourceType='Graph.windows.net' will be deprecated after September 2023. Please migrate to ResourceType ='Graph.microsoft.com'

Paso 3: Llamar a la API de análisis de Microsoft Store

Después de tener un token de acceso de Azure AD, está listo para llamar a la API de análisis de Microsoft Store. Debes pasar el token de acceso al encabezado Authorization de cada método.

Métodos para aplicaciones y juegos para UWP

Los métodos siguientes están disponibles para las adquisiciones de aplicaciones y juegos y adquisiciones de complementos:

Métodos para aplicaciones para UWP

Los siguientes métodos de análisis están disponibles para aplicaciones para UWP en el Centro de partners.

Escenario Métodos
Adquisiciones, conversiones, instalaciones y uso
Errores de la aplicación
Información detallada
Calificaciones y reseñas
Anuncios en la aplicación y campañas publicitarias

Métodos para aplicaciones de escritorio

Los siguientes métodos de análisis están disponibles para su uso por las cuentas de desarrollador que pertenecen al programa aplicación de escritorio de Windows.

Escenario Métodos
Instala .
Blocks
Errores de aplicación
Información detallada

Métodos para los servicios de Xbox Live

Los siguientes métodos adicionales están disponibles para su uso por cuentas de desarrollador con juegos que usan servicios de Xbox Live. La API de Análisis de Microsoft Store para Xbox ya no está disponible. gaming/xbox-live/get-started/join-dev-program/join-dev-program_nav

Escenario Métodos
Análisis general

Métodos para hardware y controladores

Las cuentas de desarrollador que pertenecen al programa de panel de hardware de Windows tienen acceso a un conjunto adicional de métodos para recuperar datos de análisis para hardware y controladores. Para más información, consulte API de panel de hardware.

Ejemplo de código

En el ejemplo de código siguiente se muestra cómo obtener un token de acceso de Azure AD y llamar a la API de análisis de Microsoft Store desde una aplicación de consola de C#. Para usar este ejemplo de código, asigna las variables tenantId, clientId, clientSecret y appID a los valores adecuados de tu escenario. En este ejemplo se requiere el paquete de Json.NET de Newtonsoft para deserializar los datos JSON devueltos por la API de análisis de Microsoft Store.

using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Threading.Tasks;

namespace TestAnalyticsAPI
{
    class Program
    {
        static void Main(string[] args)
        {
            string tenantId = "<your tenant ID>";
            string clientId = "<your client ID>";
            string clientSecret = "<your secret>";

            string scope = "https://manage.devcenter.microsoft.com";

            // Retrieve an Azure AD access token
            string accessToken = GetClientCredentialAccessToken(
                    tenantId,
                    clientId,
                    clientSecret,
                    scope).Result;

            // This is your app's Store ID. This ID is available on
            // the App identity page of the Dev Center dashboard.
            string appID = "<your app's Store ID>";

            DateTime startDate = DateTime.Parse("08-01-2015");
            DateTime endDate = DateTime.Parse("11-01-2015");
            int pageSize = 1000;
            int startPageIndex = 0;

            // Call the Windows Store analytics API
            CallAnalyticsAPI(accessToken, appID, startDate, endDate, pageSize, startPageIndex);

            Console.Read();
        }

        private static void CallAnalyticsAPI(string accessToken, string appID, DateTime startDate, DateTime endDate, int top, int skip)
        {
            string requestURI;

            // Get app acquisitions
            requestURI = string.Format(
                "https://manage.devcenter.microsoft.com/v1.0/my/analytics/appacquisitions?applicationId={0}&startDate={1}&endDate={2}&top={3}&skip={4}",
                appID, startDate, endDate, top, skip);

            //// Get add-on acquisitions
            //requestURI = string.Format(
            //    "https://manage.devcenter.microsoft.com/v1.0/my/analytics/inappacquisitions?applicationId={0}&startDate={1}&endDate={2}&top={3}&skip={4}",
            //    appID, startDate, endDate, top, skip);

            //// Get app failures
            //requestURI = string.Format(
            //    "https://manage.devcenter.microsoft.com/v1.0/my/analytics/failurehits?applicationId={0}&startDate={1}&endDate={2}&top={3}&skip={4}",
            //    appID, startDate, endDate, top, skip);

            //// Get app ratings
            //requestURI = string.Format(
            //    "https://manage.devcenter.microsoft.com/v1.0/my/analytics/ratings?applicationId={0}&startDate={1}&endDate={2}top={3}&skip={4}",
            //    appID, startDate, endDate, top, skip);

            //// Get app reviews
            //requestURI = string.Format(
            //    "https://manage.devcenter.microsoft.com/v1.0/my/analytics/reviews?applicationId={0}&startDate={1}&endDate={2}&top={3}&skip={4}",
            //    appID, startDate, endDate, top, skip);

            HttpRequestMessage requestMessage = new HttpRequestMessage(HttpMethod.Get, requestURI);
            requestMessage.Headers.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);

            WebRequestHandler handler = new WebRequestHandler();
            HttpClient httpClient = new HttpClient(handler);

            HttpResponseMessage response = httpClient.SendAsync(requestMessage).Result;

            Console.WriteLine(response);
            Console.WriteLine(response.Content.ReadAsStringAsync().Result);

            response.Dispose();
        }

        public static async Task<string> GetClientCredentialAccessToken(string tenantId, string clientId, string clientSecret, string scope)
        {
            string tokenEndpointFormat = "https://login.microsoftonline.com/{0}/oauth2/token";
            string tokenEndpoint = string.Format(tokenEndpointFormat, tenantId);

            dynamic result;
            using (HttpClient client = new HttpClient())
            {
                string tokenUrl = tokenEndpoint;
                using (
                    HttpRequestMessage request = new HttpRequestMessage(
                        HttpMethod.Post,
                        tokenUrl))
                {
                    string content =
                        string.Format(
                            "grant_type=client_credentials&client_id={0}&client_secret={1}&resource={2}",
                            clientId,
                            clientSecret,
                            scope);

                    request.Content = new StringContent(content, Encoding.UTF8, "application/x-www-form-urlencoded");

                    using (HttpResponseMessage response = await client.SendAsync(request))
                    {
                        string responseContent = await response.Content.ReadAsStringAsync();
                        result = JsonConvert.DeserializeObject(responseContent);
                    }
                }
            }

            return result.access_token;
        }
    }
}

Respuestas de errores

La API de análisis de Microsoft Store devuelve respuestas de error en un objeto JSON que contiene códigos de error y mensajes. En el ejemplo siguiente se muestra una respuesta de error producida por un parámetro no válido.

{
    "code":"BadRequest",
    "data":[],
    "details":[],
    "innererror":{
        "code":"InvalidQueryParameters",
        "data":[
            "top parameter cannot be more than 10000"
        ],
        "details":[],
        "message":"One or More Query Parameters has invalid values.",
        "source":"AnalyticsAPI"
    },
    "message":"The calling client sent a bad request to the service.",
    "source":"AnalyticsAPI"
}