Esta página descreve alguns problemas comuns que pode encontrar quando usa as credenciais predefinidas da aplicação (ADC).
Para obter informações sobre como funcionam as ADC, incluindo onde são encontradas as credenciais, consulte o artigo Como funcionam as Credenciais padrão da aplicação.
As credenciais de utilizador não estão a funcionar
Se o seu pedido de API devolver uma mensagem de erro a indicar que as credenciais do utilizador não são suportadas por esta API, que a API não está ativada no projeto ou que não foi definido nenhum projeto de quota, reveja as seguintes informações.
Existem dois tipos de Google Cloud APIs:
APIs baseadas em recursos, que usam o projeto associado aos recursos acedidos para faturação e quota.
APIs baseadas no cliente, que usam o projeto associado ao cliente que acede aos recursos para faturação e quota.
Quando fornece credenciais de utilizador para autenticar numa API baseada no cliente, tem de especificar o projeto a usar para faturação e quota. Este projeto é denominado projeto de quotas.
Existem várias formas de especificar um projeto de quota, incluindo as seguintes opções:
Atualize o ficheiro ADC para usar um projeto diferente como projeto de quota:
gcloud auth application-default set-quota-project YOUR_PROJECT
Se estiver a usar a CLI gcloud para chamar a API, pode definir o projeto de quota na configuração da CLI gcloud:
gcloud config set billing/quota_project YOUR_PROJECT
Se estiver a chamar a API REST ou RPC diretamente, use o cabeçalho HTTP
x-goog-user-project
para especificar um projeto de quota em cada pedido. Para ver detalhes, consulte o artigo Defina o projeto de quota com um pedido REST.
Tem de ter a autorização do IAM serviceusage.services.use
para poder designar um projeto como o seu projeto de faturação. A autorização serviceusage.services.use
está incluída na função do IAM Service Usage Consumer. Se não tiver a serviceusage.services.use
autorização para nenhum projeto, contacte o administrador de segurança ou o proprietário
do projeto que lhe pode atribuir a função de consumidor de utilização de serviços no projeto.
Para mais informações sobre projetos de quota, consulte o artigo Vista geral do projeto de quota. Para ver informações sobre formas adicionais de definir o projeto de quota, consulte o artigo Defina o projeto de quota.
Credenciais incorretas
Se as suas credenciais não estiverem a conceder o acesso esperado ou não forem encontradas, verifique o seguinte:
Se estiver a usar a CLI gcloud para aceder Google Cloud num ambiente local, certifique-se de que compreende que credenciais está a usar. Quando usa a CLI gcloud, está a usar as credenciais que forneceu à CLI gcloud através do comando
gcloud auth login
. Não está a usar as credenciais que facultou ao ADC. Para mais informações sobre estes dois conjuntos de credenciais, consulte Configuração de autenticação da CLI gcloud e configuração do ADC.Certifique-se de que a variável de ambiente
GOOGLE_APPLICATION_CREDENTIALS
só é definida se estiver a usar uma chave de conta de serviço ou outro ficheiro JSON para o ADC. As credenciais indicadas pela variável de ambiente têm precedência sobre outras credenciais, incluindo as da Workload Identity Federation para o GKE.Confirme se o principal que está a fazer o pedido tem as funções do IAM necessárias. Se estiver a usar credenciais de utilizador, as funções têm de ser concedidas ao endereço de email associado à conta de utilizador. Se estiver a usar uma conta de serviço, essa conta de serviço tem de ter as funções necessárias.
Se fornecer uma chave da API com o pedido da API, a chave da API tem precedência sobre o ADC em qualquer localização. Se tiver definido a variável de ambiente
GOOGLE_APPLICATION_CREDENTIALS
e estiver a usar uma chave de API, a API pode devolver um aviso a indicar que as credenciais que forneceu ao ADC estão a ser ignoradas. Para parar o aviso, anule a definição da variável de ambiente.GOOGLE_APPLICATION_CREDENTIALS
Tipo de credencial não reconhecido
Se o seu pedido de API devolver um erro que inclua Error creating credential
from JSON. Unrecognized credential type
, certifique-se de que está a usar uma credencial válida. Os ficheiros de ID de cliente não são suportados para fornecer credenciais para o ADC.
Erro devolvido para credenciais locais da representação da conta de serviço
As credenciais de um ficheiro ADC local gerado através da representação da conta de serviço não são suportadas por todas as bibliotecas de autenticação. Se a sua chamada devolver um erro semelhante a Neither metadata server or valid service
account credentials are found
, não pode usar credenciais roubadas locais para esta tarefa.
Para evitar este erro, crie o ficheiro ADC a partir das suas credenciais de utilizador ou execute o código num ambiente que tenha um servidor de metadados disponível (como o Compute Engine).
Projeto desconhecido 764086051850
usado para o pedido
O projeto 764086051850
é o projeto usado pela CLI gcloud. Se vir erros de autenticação que fazem referência a este projeto, está a tentar usar uma API baseada no cliente e não definiu o projeto nem o projeto de quota para a sua configuração.
Para mais informações, consulte o artigo As credenciais do utilizador não funcionam.
Acesso bloqueado quando usa âmbitos
Quando tenta criar um ficheiro ADC local e é devolvido um erro semelhante a This app
is blocked
ou Access blocked: Authorization Error
, pode estar a tentar usar âmbitos que não são suportados pelo comando de configuração de ADC predefinido. Normalmente, este problema é causado pela adição de âmbitos para aplicações fora do Google Cloud, como o Google Drive.
Por predefinição, os tokens de acesso gerados a partir de um ficheiro ADC local criado com credenciais do utilizador incluem o
âmbito ao nível da nuvem https://www.googleapis.com/auth/cloud-platform
.
Para especificar âmbitos explicitamente, use a flag
–-scopes
com o comando gcloud auth application-default login
.
Para adicionar âmbitos para serviços fora do Google Cloud, como o Google Drive,
crie um ID do cliente OAuth
e faculte-o ao comando gcloud auth application-default login
através da flag
–-client-id-file
, especificando
os seus âmbitos com a flag
-–scopes
.