Как получить Log с помощью Stackdriver Logging API - PullRequest
0 голосов
/ 15 февраля 2020

Я разрабатываю чат-бота с использованием Dialogflow, и мне нужно получить из него полный журнал разговоров.

Я проверил эту страницу и предположил, что он может достичь этого с помощью Stackdriver Логирование API.

Я ссылался на страницу ниже, и я попытался, однако, используя этот API, возникает ошибка 403. https://cloud.google.com/logging/docs/reference/v2/rest/v2/logs/list

Я использовал это неправильно?

Как я могу решить эту проблему?

Это сообщение об ошибке.

{
  "error": {
    "code": 403,
    "message": "The request is missing a valid API key.",
    "status": "PERMISSION_DENIED"
  }
}

Это мой код вызова API. Я использовал Google Apps Script.

function getLogs() {
  //XXXXXXXX is my project_id
  var output = UrlFetchApp.fetch('https://logging.googleapis.com/v2/projects/XXXXXXXX/logs');
  Logger.log(output)
}

1 Ответ

1 голос
/ 17 февраля 2020

Я решил таким образом.

  1. Добавьте мой ключ API в запрос http.
var options = {headers: {Authorization: "Bearer " + ScriptApp.getOAuthToken()}};
var logs = UrlFetchApp.fetch("https://logging.googleapis.com/v2/projects/XXXXXXXX/logs?key=my_api_key", options)
Добавить область действия в appscript. json.
"oauthScopes": ["https://www.googleapis.com/auth/cloud-platform","https://www.googleapis.com/auth/script.external_request"]

Затем я обнаружил, что logs.list метонд не подходит для моей цели, поэтому мне нужно перейти на метод v2.entries.

function getLogs(){
var options = {
    method: "post",
    contentType: "application/json",
    headers: {Authorization: 'Bearer ' + ScriptApp.getOAuthToken()},
    payload: JSON.stringify({
      resourceNames: ['projects/XXXXXXX'],
      filter: "timestamp >= searchdate",
      orderBy: "timestamp desc",
      pageSize: 1,
    }),
  }

  var logs = UrlFetchApp.fetch("https://logging.googleapis.com/v2/entries:list?key=my_api_key", options);
  Logger.log(logs);

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