Obter e usar API Key
No EasyAR Developer Center não há limite para a criação de API Key. Recomenda-se atribuir API Key independente a diferentes aplicações para controlar permissions de forma mais refinada.
Criar API Key
Faça login no EasyAR Developer Center. Se for a primeira vez que usa API Key, crie primeiro uma API Key:
- Em "Authorization", clique em "Cloud Service API KEY"
- Na página "API KEY", clique no botão "Create API KEY"

- Preencha "Application Name"
- Selecione os cloud services necessários conforme as necessidades da aplicação. Não é recomendado autorizar todos.
- Clique em "OK"
Dica
Ao usar SpatialMap, selecione SpatialMap.
Ao usar Cloud Recognition, selecione Cloud Recognition.
Ao usar Mega Landmark, selecione Mega Landmark; é necessário solicitar ao comercial antes de usar esta função.
Ao usar AR Operation Center, selecione AR Operation Center; é necessário solicitar ao comercial antes de usar esta função.
Ao usar Mega Block cloud localization, selecione Mega Block.

- Nesse momento, API Key e API Secret serão gerados na página conforme mostrado abaixo. Tenha cuidado para não divulgá-los.

Aviso
Não use API Key e API Secret diretamente em aplicações client, como Web ou WeChat Mini Program.
Obter Token
Há duas formas de obter Token: 1. obter diretamente pelo Developer Center; 2. obter por código. Se você precisa controlar permissions de acesso a resources, recomenda-se a segunda forma. As duas formas são descritas abaixo.
Obter Token pelo Developer Center
- Selecione uma API Key para usar e clique em "Manage" à direita

- Selecione um período de validade do Token
- Clique em "Generate Token"
- Clique em "Copy"

Nota
Segurança é o principal motivo para configurar a validade do Token. Se a validade for longa demais, uma vez vazado ou roubado, um invasor poderá usá-lo por muito tempo, causando vazamento de dados ou operações não autorizadas. A validade limita a janela efetiva do Token; mesmo que vaze, o dano fica limitado a pouco tempo.
Gerar Token com API Key e API Secret
O processo de geração de Token exige assinar os parâmetros principais para garantir a segurança da transmissão. Depois, os dados assinados são enviados ao serviço STS (Security Token Service) para autenticação. Após a verificação pelo STS, é emitido um access Token temporário válido apenas na janela de tempo especificada; após expirar, é necessário iniciar novamente a autenticação.
Aviso
Não gere Token no client code; gere no server side e depois envie ao client para uso.
Parâmetros de request
| Nome do campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| apiKey | string | Sim | API Key |
| expires | int | Sim | Tempo de validade do Token gerado, em segundos |
| acl | string | Sim | Access Control List, controla as permissões de resource acessíveis pelo token |
| timestamp | long | Sim | Timestamp, em milissegundos |
| signature | string | Sim | Signature |
acl: é composto por um ou mais AC (access control). Cada AC contém quatro partes: service, effect, resource e permission.
- service: tipo de serviço; atualmente suporta ecs:crs (Cloud Recognition), ecs:spatialmap (Sparse Spatial Map), ecs:cls (Mega Block Cloud Localization), ecs:vps1 (landmark)
- resource: app id do serviço específico, por exemplo CRS AppId da Cloud Recognition library
- effect: especifica se o acesso correspondente a esta configuração de resource pode ser executado; valores Allow, Deny
- permission: valores de permissão READ, WRITE
Exemplo de estrutura:
[
{
"service": "ecs:crs",
"resource": ["f7ff497727ab2d55ea01d9984ef8068c"],
"effect": "Allow",
"permission": ["READ"]
}
]
Método de signature
- Ordene todos os parâmetros da request pelo key name
- Para cada parâmetro, concatene key name e value em uma string
- Concatene todas as strings obtidas e acrescente API Secret no final
- Calcule o sha256 hash da string; o valor hexadecimal é a signature
Exemplo de signature
<?php
// sua API Key e seu API Secret
$apiKey = '6a47f7f8ff6......68744b4bcf';
$apiSecret = '87745d866345256b......fbae27c502a';
// App ID do seu servico
$appId = 'f7ff497727ab2d55ea01d9984ef8068c';
// tempo de validade, em segundos
$expires = 3600;
// constroi os parametros a serem assinados
$data = [
'apiKey' => $apiKey,
'expires' => $expires,
'acl' => '[{"service":"ecs:crs","resource":["'. $appId .'"],"effect":"Allow","permission":["READ"]}]',
'timestamp' => time() * 1000,
];
// ordena
ksort($data);
// concatena a string
$builder = [];
foreach ($data as $key => $value) {
array_push($builder, $key . $value);
}
// concatena o API Secret
array_push($builder, $apiSecret);
// gera a assinatura
$signature = hash('sha256', implode('', $builder));
echo $signature;
Dica
Ao adicionar a signature, ACL precisa ser convertido para string JSON.
Obter Token
Adicione a signature gerada acima à lista de parâmetros e envie a request para a interface /token/v2 para obter Token.
- Endereço da request:
https://uac.easyar.com/token/v2ouhttps://uac-na1.easyar.com/token/v2(North America 1) - Método da request: POST
- Header da request: Content-Type: application/json
- Parâmetros da request:
{"apiKey":"6a47f7f8ff6......68744b4bcf","expires":3600,"acl":"[{\"service\":\"ecs:crs\",\"resource\":[\"f7ff497727ab2d55ea01d9984ef8068c\"],\"effect\":\"Allow\",\"permission\":[\"READ\"]}]","timestamp":1765954279002,"signature":"32f18a37fc3c18......55c4943af9"}
Exemplo:
curl -X POST https://uac.easyar.com/token/v2 \
-H 'Content-Type: application/json' \
-d '{"apiKey":"6a47f7f8ff6......68744b4bcf","expires":3600,"acl":"[{\"service\":\"ecs:crs\",\"resource\":[\"f7ff497727ab2d55ea01d9984ef8068c\"],\"effect\":\"Allow\",\"permission\":[\"READ\"]}]","timestamp":1765954279002,"signature":"32f18a37fc3c18......55c4943af9"}'
Se statusCode no resultado retornado for 0, significa sucesso.
Formato de retorno normal:
{
"statusCode": 0,
"timestamp": 1765954874399,
"msg": "Success",
"result": {
"apiKey": "6a47f7f8ff6......68744b4bcf",
"expires": 3600,
"token": "nuPDCj......xstQX",
"expiration": "2025-12-17T08:01:14.399+0000"
}
}
- token: Token para autenticação da business request.
- expiration: horário de expiração do token; após expirar, é necessário solicitar o token novamente.
Formato de retorno de erro:
{
"statusCode": 4001017,
"timestamp": 1765954666624,
"msg": "AppId is not authorized by this API Key",
"result": null
}
Usar Token
Em requests https de negócio, adicione Token ao request header no formato: {"Authorization": "nuPDCj......xstQX"}.
Ao enviar business API request, é necessário adicionar o parâmetro appId (consulte o service correspondente no Developer Center para a origem).
Descrição dos error codes
Durante a geração e o uso de Token podem ocorrer diversos errors ou exceptions. Para ajudar developers a localizar problemas rapidamente e tomar medidas eficazes, os error codes comuns e seus significados são detalhados abaixo:
| Error code | Error message | Descrição do erro | Solução |
|---|---|---|---|
| 4001011 | API Key invalid | API Key inválida | Verifique se esta API Key existe em "Cloud Service API KEY" |
| 4001012 | Timestamp invalid | Timestamp inválido | A unidade do timestamp é milissegundos e a diferença em relação ao horário padrão não deve exceder 5 minutos |
| 4001015 | Signature invalid | Signature inválida | Verifique se o algoritmo de signature está correto e se API Secret corresponde a API KEY |
| 4001017 | AppId is not authorized by this API Key | API Key não autorizou este AppId | Verifique se o service ao qual AppId pertence está associado a esta API Key |
| 4001018 | Base64 decode error | Authorization configurado no request header não é base64 válido | Use diretamente o Token obtido, sem qualquer processamento |
| 4001019 | Decryption error | Authorization configurado no request header não foi gerado pela EasyAR | Use diretamente o Token obtido, sem qualquer processamento |
| 4001022 | API Key's resource is empty | API Key não possui cloud service associado | Verifique se API Key está associada a cloud service e se o cloud service associado expirou |
| 4001024 | Token is expired | Token expirou | Gere novamente |
| 4001025 | Token generate fail | Falha ao gerar Token | Entre em contato com o suporte técnico: support@easyar.com |