Usar a API ARCore no Google Cloud

Selecione a plataforma:

Recursos do ARCore, como a API Geospatial API e o Cloud Anchors usam a API ARCore hospedada no Google Cloud. Ao usar esses recursos, o aplicativo usa credenciais para acessar o serviço da API ARCore.

Neste guia de início rápido, descrevemos como configurar seu aplicativo para que ele possa se comunicar com o serviço da API ARCore hospedado no Google Cloud.

Criar um novo projeto do Google Cloud ou usar um projeto atual

Se você já tiver um projeto, selecione-o.

Acessar o seletor de projetos

Se você não tiver um projeto do Google Cloud, crie um.

Criar um projeto

Ativar a API ARCore

Para usar a API ARCore, você precisa ativá-la no seu projeto.

Ativar a API ARCore

Configurar um método de autorização

Um aplicativo do Unity pode se comunicar com a API ARCore usando duas métodos de autorização: autorização sem chave, que é o método recomendado e autorização de chave de API:

  • No Android, a autorização sem chave usa uma combinação do nome do pacote do aplicativo e a impressão digital da chave de assinatura para autorizar o aplicativo.

    No iOS, a autorização sem chave usa um token assinado para controlar o acesso à API. Isso exige que um servidor de sua propriedade assine tokens e controle o acesso a a API.

  • Uma chave de API é uma string que identifica um projeto do Google Cloud. As chaves de API são geralmente não são considerados seguros, porque costumam ser acessíveis aos clientes. Considere usar a autorização sem chave para se comunicar com a API ARCore.

Sem chave

Para autorizar o app a usar a autenticação sem chave, crie um cliente OAuth 2.0 do Google Ads.

Determinar impressões digitais de chave de assinatura

O ID do cliente OAuth 2.0 usa a impressão digital da chave de assinatura do app para identificar o app.

Como gerar a impressão digital de assinatura de depuração

Ao executar ou depurar seu projeto, as Ferramentas do SDK do Android assinam automaticamente seu app com um certificado de depuração gerado.

Use o comando a seguir para receber a impressão digital do certificado de depuração.

Mac/Linux
keytool -list -v -alias androiddebugkey -keystore ~/.android/debug.keystore
Windows
keytool -list -v -alias androiddebugkey -keystore %USERPROFILE%\.android\debug.keystore

O utilitário keytool solicita que você insira uma senha para o keystore. A a senha padrão do keystore de depuração é android. O utilitário keytool imprime a impressão digital no terminal. Exemplo:

   Certificate fingerprint: SHA1: <strong>DA:39:A3:EE:5E:6B:4B:0D:32:55:BF:EF:95:60:18:90:AF:D8:07:09

Como conseguir uma impressão digital de assinatura de um keystore

Se você tiver um arquivo de keystore, use o utilitário keytool para determinar a impressão digital.

keytool -list -v -alias your-key-name -keystore path-to-production-keystore

Em seguida, o utilitário keytool imprime a impressão digital no terminal. Exemplo:

   Certificate fingerprint: SHA1: DA:39:A3:EE:5E:6B:4B:0D:32:55:BF:EF:95:60:18:90:AF:D8:07:09

Como conseguir a chave de assinatura do app na Assinatura de apps do Google Play

Ao usar a Assinatura de apps do Google Play, O Google gerencia a chave de assinatura do app e a usa para assinar seus APKs. Essa chave será usada para a impressão digital da assinatura.

  1. Na página Assinatura de apps do Google Play Console, role até Certificado da chave de assinatura do app.
  2. Use a impressão digital do certificado SHA-1.

Criar IDs do cliente OAuth 2.0

Para cada chave de assinatura aplicável das etapas anteriores, crie um ID do cliente OAuth 2.0 na Credenciais do projeto do Google Cloud.

  • No Google Cloud, abra a página "Credenciais".

    Credenciais

  • Clique em Criar credenciais e selecione ID do cliente OAuth no menu.

  • Preencha os campos obrigatórios da seguinte forma:

    • Tipo de aplicativo: escolha Android.
    • Nome do pacote: use o nome do pacote conforme declarado no AndroidManifest.xml.
    • Impressão digital do certificado SHA-1: use uma impressão digital obtida nas etapas anteriores.
  • Pressione Criar.

Incluir bibliotecas necessárias

  1. Inclua com.google.android.gms:play-services-auth:16+ nas dependências do app.
  2. Se você estiver usando a minificação de código, faça o seguinte: Adicione-o ao arquivo build.gradle do seu app:

    buildTypes {
      release {
        ...
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
      }
    }
    
  3. Adicione o seguinte ao arquivo proguard-rules.pro do seu app:

    -keep class com.google.android.gms.common.** { *; }
    -keep class com.google.android.gms.location.** { *; }
    -keep class com.google.android.gms.auth.** { *; }
    -keep class com.google.android.gms.tasks.** { *; }
    

Seu app agora está configurado para usar a autenticação sem chave.

Sem chave

O ARCore oferece suporte à autorização de chamadas de API no iOS usando um arquivo (JSON Web token). O token deve ser assinado por um Conta de serviço.

Para gerar tokens para iOS, você precisa ter um endpoint no seu servidor que atenda aos seguintes requisitos:

  • Seu próprio mecanismo de autorização precisa proteger o endpoint.

  • O endpoint precisa gerar um novo token todas as vezes, assim:

    • Cada usuário recebe um token exclusivo.
    • Os tokens não expiram imediatamente.

Criar uma conta de serviço e uma chave de assinatura

Siga estas etapas para criar uma conta de serviço do Google e uma chave de assinatura:

  1. No Google Cloud, abra a página "Credenciais".
    Credenciais
  2. Clique em Criar credenciais > Conta de serviço.
  3. Em Detalhes da conta de serviço, digite um nome para a nova conta e clique em Criar.
  4. Na página "Permissões da conta de serviço", acesse o menu suspenso Selecionar papel. Selecione Contas de serviço > Criador de token da conta de serviço e clique em Continuar.
  5. Na página Conceda aos usuários acesso a essa conta de serviço, clique em "Concluído".
  6. Na página Credenciais localize a seção "Contas de serviço" e clique no nome da conta que você acabou de criar.
  7. Na página Detalhes da conta de serviço, role para baixo até a seção "Chaves" e selecione Adicionar chave > Criar nova chave.
  8. Selecione JSON como o tipo de chave e clique em Criar.

    Isso faz o download de um arquivo JSON que contém a chave privada na sua máquina. Armazenamento faça o download do arquivo de chave JSON em um local seguro.

Criar tokens no seu servidor

Para criar novos tokens (JWTs) no seu servidor, use o JWT padrão bibliotecas e o arquivo JSON que você transferiu por download com segurança da sua nova conta de serviço.

Criar tokens na sua máquina de desenvolvimento

Para gerar JWTs na sua máquina de desenvolvimento, use o seguinte Comando oauth2l:

oauth2l fetch --cache "" --jwt --json $KEYFILE --audience "https://arcore.googleapis.com/"

É necessário especificar um local de cache vazio usando a flag --cache para garantir que um token diferente seja produzido a cada vez. Não se esqueça de cortar string resultante. Espaços extras ou caracteres de nova linha farão com que a API rejeitar o token.

Assinar o token

É preciso usar o algoritmo RS256 e as seguintes declarações para assinar o JWT:

  • iss: o endereço de e-mail da conta de serviço.
  • sub: o endereço de e-mail da conta de serviço.
  • iat: o horário da época Unix em que o token foi gerado, em segundos.
  • expiat + 3600 (1 hora). O horário da época Unix em que o token expira, em segundos.
  • aud — o público-alvo. Ele precisa ser definido como https://arcore.googleapis.com/

As declarações não padrão não são obrigatórias no payload do JWT, mas você pode encontrar a A declaração uid é útil para identificar o usuário correspondente.

Se você usa uma abordagem diferente para gerar os JWTs, como usar um em um ambiente gerenciado pelo Google, assine seus JWTs com as declarações nesta seção. Acima de tudo, verifique se o público-alvo está correto.

Transmitir o token na sessão do ARCore

  1. Verifique se a Estratégia de autenticação do iOS está definida como AuthenticationToken: No Unity, acesse Edit > Configurações do projeto > Gerenciamento de plug-in XR > Extensões do ARCore. No menu suspenso iOS Authentication Strategy selecione a opção Authentication Token.
  2. Quando você receber um token, transmita-o para sua sessão do ARCore usando ARAnchorManager.SetAuthToken():

    // Designate the token to authorize ARCore API calls
    // on the iOS platform. This should be called each time the application's token is refreshed.
    ARAnchorManager.SetAuthToken(authToken);
    

Seu app agora está configurado para usar a autenticação sem chave.

Observe o seguinte ao transmitir um token para a sessão:

  • Se você usou uma chave de API para criar a sessão, o ARCore ignorará o e registrar um erro.

    Se você não precisar mais da chave de API, exclua-a na página Google Developers console e removê-lo do app.

  • O ARCore ignora tokens que contenham espaços ou caracteres especiais.

  • Os tokens geralmente expiram após uma hora. Se houver a possibilidade de que seus token pode expirar durante o uso, obter um novo token e passá-lo para a API.

Chave de API

  1. No Google Cloud, abra a página "Credenciais".
    Credenciais
  2. Clique em Criar credenciais e, em seguida, selecione a chave de API no menu.
    O A caixa de diálogo "Chave de API criada" mostra a string da chave recém-criada.
  3. No Unity, acesse Edit > Configurações do projeto > Gerenciamento de plug-in XR > Extensões do ARCore. Para cada plataforma segmentada (Android, iOS), na sua No menu suspenso Estratégia de autenticação, selecione a opção Chave de API. Depois, insira sua chave de API nos campos de chave de API.

  4. Leia a documentação sobre restrições de chaves de API. para proteger sua chave de API.

Seu app agora está configurado para usar chaves de API.

A seguir

Com a autorização configurada, confira os seguintes recursos do ARCore que usam ele: