Eu gerei uma chave de servidor no API Manager e tentei executar o seguinte em meu Mac:
curl 'https://sheets.googleapis.com/v4/spreadsheets/MySheetID?ranges=A1:B5&key=TheServerKeyIGeneratedInAPIManager'
Mas é isso que ele retorna:
{
"error": {
"code": 403,
"message": "The caller does not have permission",
"status": "PERMISSION_DENIED"
}
}
O que eu estou fazendo errado aqui?
google-api
google-sheets
google-sheets-api
Instabrite
fonte
fonte
Respostas:
Para resolver esse problema, tente:
Funcionou para mim :)
fonte
Eu sei que é um pouco tarde para responder, mas para outras pessoas que lutam com o mesmo problema.
Basta alterar a permissão da planilha para pública em sua unidade para que ela possa ser acessada sem autenticação por meio de chamadas de API.
Para alterar o acesso:
Envie uma solicitação de API para buscar dados de planilhas sem autenticação.
Observação: se a planilha contiver dados confidenciais, não é seguro torná-la pública e sim fazê-lo com acesso autenticado.
fonte
Certifique-se de prestar atenção ao comentário de @KishanPatel:
fonte
A maneira mais fácil é corrigir usando gcloud cli. Mais documentos aqui https://cloud.google.com/pubsub/docs/quickstart-cli#before-you-begin
instalar gcloud
então ligue
em seguida, verifique seu projeto ativo e credenciais
Se não estiver ok, certifique-se de que você está autenticado com a conta correta:
Mude para a conta do projeto se não:
Dependendo da conta, a lista de projetos será diferente:
Mudar para o projeto pretendido:
Em seguida, Criar credenciais padrão do aplicativo com
gcloud auth application-default login
e, em seguida, google-cloud detectará automaticamente essas credenciais.fonte
Meus 10 centavos ... Um exemplo simples de ler a planilha usando Java .
private Credential getCredentials() throws IOException { final InputStream accessKey = new ByteArrayInputStream("<credential json>"); final GoogleCredential credential = GoogleCredential.fromStream(accessKey) .createScoped(Collections.singleton(SheetsScopes.SPREADSHEETS_READONLY)); return credential; } private HttpTransport httpTransport() { try { return GoogleNetHttpTransport.newTrustedTransport(); } catch (GeneralSecurityException | IOException e) { throw new SpreadSheetServiceException(e); } } Sheets service = new Sheets.Builder(httpTransport(), JSON_FACTORY, getCredentials()) .setApplicationName("app-name") .build(); ValueRange response = service.spreadsheets().values() .get("<spread_sheet_id>", "A1:A") .execute();
fonte