Попробуйте этот API для ведения журнала API возвращает "PERMISSION_DENIED" - PullRequest
0 голосов
/ 21 февраля 2019

Я пытаюсь протестировать API Google Cloud Logging с помощью функции "Попробуйте этот API", которую Google Cloud Platform имеет в своей документации, но я получаю ответ обратно:

{
  "error": {
    "code": 403,
    "message": "The caller does not have permission",
    "status": "PERMISSION_DENIED"
  }
}

Я знаю, что мойТело ответа является правильным, поскольку оно работает с OAuth 2.0, но завершается ошибкой при использовании API-ключа.

Auth 2.0: Рабочий запрос с использованием OAuth 2.0

API-ключ: Нерабочий запрос с использованием ключа API

Документы Google говорят, что они сгенерировали свой собственный ключ API для этой функции "Попробуйте этот API".https://developers.google.com/explorer-help/

Так как Google использует свой собственный ключ API, я не понимаю, почему я получаю статус ответа PERMISSION_DENIED.

Редактировать: вот ссылка на функцию "Попробуйте этот API"в Google Cloud Platform, если вы хотите попробовать.https://cloud.google.com/logging/docs/reference/v2/rest/v2/entries/write?apix_params=%7B%22resource%22%3A%7B%22entries%22%3A%5B%7B%22logName%22%3A%22projects%2F%5BPROJECT_ID%5D%2Flogs%2Frequests%22%2C%22resource%22%3A%7B%22type%22%3A%22http_load_balancer%22%2C%22labels%22%3A%7B%7D%7D%7D%5D%7D%7D

Вот запрос python, который я использую в своем коде для создания записи:

import requests

entry = {
        "entries": [
            {
                "logName": "projects/[PROJECT_ID]/logs/requests",
                "resource": {
                    "type": "http_load_balancer",
                    "labels": {}
                }
            }
        ]
    }

requests.post('https://logging.googleapis.com/v2/entries:write?key=[YOUR_API_KEY]', data=json.dumps(entry))

Ключ API был создан от моего пользователя, у которого есть "logs writer",«Просмотр журналов» и «Вход администратора».Это теоретически должно быть все разрешения, которые мне нужны для отправки запроса.Однако он все еще возвращает статус «PERMISSION_DENIED».

Любая помощь будет принята с благодарностью.Заранее спасибо.

1 Ответ

0 голосов
/ 21 февраля 2019

Похоже, что вы делаете запрос на запись данных, которые недоступны для публичного доступа.Ключи API не имеют понятия о пользователе, они только определяют, что вам разрешено вызывать API.Похоже, ваш запрос ключа API работает настолько, насколько это возможно, но ответ говорит вам: я не знаю, кто вы, поэтому я не могу позволить вам сделать это.

OAuth 2.0решение здесь, так как оно действует от имени вашей учетной записи (вы должны дать согласие), позволяя API подтвердить, что у вас есть разрешение на это действие.

Сервисные учетные записи - это еще один вариант, чтобы действовать от имениваш проект вместо вашего пользователя, но они не практичны из веб-интерфейса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...