Partilhar via


Acessar dados de análise usando os serviços da Store

Use a API de análise da Microsoft Store para recuperar programaticamente dados de análise para aplicativos registrados em sua conta ou na conta do Windows Partner Center da sua organização. Essa API permite que você recupere dados de aquisições, erros, classificações e avaliações de aplicativos e complementos (também conhecidos como produtos no aplicativo ou IAP). Essa API usa o Microsoft Entra para autenticar as chamadas do seu aplicativo ou serviço.

As etapas a seguir descrevem o processo completo:

  1. Certifique-se de ter concluído todos os pré-requisitos.
  2. Antes de chamar um método na API de análise da Microsoft Store, obtenha um token de acesso do Microsoft Entra. Depois de obter um token, você tem 60 minutos para usá-lo em chamadas para a API de análise da Microsoft Store antes que o token expire. Depois que o token expirar, será possível gerar um novo.
  3. Chame a API de análise da Microsoft Store.

Etapa 1: Concluir os pré-requisitos para usar a API de análise da Microsoft Store

Antes de começar a escrever código para chamar a API de análise da Microsoft Store, verifique se você concluiu os pré-requisitos a seguir.

  • Você (ou sua organização) deve ter um diretório do Microsoft Entra e deve ter permissão de administrador global para o diretório. Se você já usa o Microsoft 365 ou outros serviços comerciais da Microsoft, já tem um diretório do Microsoft Entra. Caso contrário, você pode criar um novo no Partner Center sem custo adicional.

  • Você deve associar um aplicativo do Microsoft Entra à sua conta do Partner Center, recuperar a ID do locatário e a ID do cliente para o aplicativo e gerar uma chave. O aplicativo Microsoft Entra representa o aplicativo ou serviço do qual você deseja chamar a API de análise da Microsoft Store. Você precisa da ID do locatário, da ID do cliente e da chave para obter um token de acesso do Microsoft Entra que você passa para a API.

    Observação

    É necessário executar essa tarefa apenas uma vez. Depois de ter a ID do locatário, a ID do cliente e a chave, você poderá reutilizá-los sempre que precisar criar um novo token de acesso do Microsoft Entra.

Para associar um aplicativo do Microsoft Entra à sua conta do Partner Center e recuperar os valores necessários:

  1. No Partner Center, associe a conta do Partner Center da sua organização ao diretório do Microsoft Entra da sua organização.
  2. Em seguida, na página Usuários na seção Configurações da conta do Partner Center, adicione o aplicativo Microsoft Entra que representa o aplicativo ou serviço que você usará para acessar dados de análise para sua conta do Partner Center. Lembre-se de atribuir esse aplicativo à função de Gerenciador. Se o aplicativo ainda não existir no diretório do Microsoft Entra, você poderá criar um novo aplicativo do Microsoft Entra no Partner Center.
  3. Retorne à página Gerenciamento de usuários e navegue até a guia Aplicativos do Microsoft Entra, clique no nome do aplicativo do Microsoft Entra para acessar as configurações do aplicativo e copie os valores de ID do locatário e ID do cliente.
  4. Clique em Adicionar nova chave. Na tela a seguir, copie o valor da Chave. Você não poderá acessar essas informações novamente depois de sair da página. Para obter mais informações, consulte Gerenciar chaves para um aplicativo do Microsoft Entra.

Etapa 2: Obter um token de acesso do Microsoft Entra

Antes de chamar qualquer um dos métodos na API de análise da Microsoft Store, você deve primeiro obter um token de acesso do Microsoft Entra que você passa para o cabeçalho de autorização de cada método na API. Após obter um token de acesso, você tem 60 minutos para usá-lo antes dele expirar. Depois de expirar, é possível renovar o token para que você possa continuar a usá-lo em chamadas futuras para a API.

Para obter o token de acesso, siga as instruções em Chamadas de Serviço para Serviço Usando Credenciais do Cliente para enviar um HTTP POST para o ponto de extremidade https://login.microsoftonline.com/<tenant_id>/oauth2/token. Confira a seguir um exemplo de solicitação.

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 o valor tenant_id no POST URI e nos parâmetros client_id e client_secret, especifique a ID do locatário, a ID do cliente e a chave para o aplicativo recuperado do Partner Center na seção anterior. Para o parâmetro resource, especifique https://manage.devcenter.microsoft.com.

Depois que seu token de acesso expirar, você poderá atualizá-lo seguindo as instruções aqui.

Observação

ResourceType=Graph.windows.net foi preterido em setembro de 2023. Migre para ResourceType =Graph.microsoft.com.

Etapa 3: Chamar a API de análise da Microsoft Store

Depois de ter um token de acesso do Microsoft Entra, você estará pronto para chamar a API de análise da Microsoft Store. Você deve passar o token de acesso para o cabeçalho Authorization de cada método.

Métodos para aplicativos e jogos UWP

Os seguintes métodos estão disponíveis para aquisições de aplicativos e jogos e aquisições de complementos:

Métodos para aplicativos UWP

Os métodos de análise a seguir estão disponíveis para aplicativos UWP no Partner Center.

Cenário Métodos
Aquisições, conversões, instalações e uso
Erros de aplicativo
Insights
Classificações e opiniões
Anúncios no aplicativo e campanhas publicitárias

Métodos para aplicativos da área de trabalho

Os métodos de análise a seguir estão disponíveis para uso por contas de desenvolvedor que pertencem ao programa Aplicativo da Área de Trabalho do Windows.

Cenário Métodos
Installs
Blocos
Erros de aplicativos
Insights

Métodos para serviços do Xbox Live

Os métodos adicionais a seguir estão disponíveis para uso por contas de desenvolvedor com jogos que usam os serviços do Xbox Live. A API de Análise da Microsoft Store para Xbox não está mais disponível. jogos/xbox-live/introdução/join-dev-program/join-dev-program_nav

Cenário Métodos
Análise geral

Métodos para hardware e drivers

As contas de desenvolvedor que pertencem ao programa de painel de hardware do Windows têm acesso a um conjunto adicional de métodos para recuperar dados de análise de hardware e drivers. Para obter mais informações, consulte API do painel de hardware.

Exemplo de código

O exemplo de código a seguir demonstra como obter um token de acesso do Microsoft Entra e chamar a API de análise da Microsoft Store de um aplicativo de console C#. Para usar este exemplo de código, atribua as variáveis tenantId, clientId, clientSecret e appID aos valores apropriados para seu cenário. Este exemplo requer o pacote Json.NET da Newtonsoft para desserializar os dados JSON retornados pela API de análise da 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;
        }
    }
}

Respostas de erro

A API de análise da Microsoft Store retorna respostas de erro em um objeto JSON que contém códigos e mensagens de erro. O exemplo a seguir demonstra uma resposta de erro causada por um parâmetro invá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"
}