Как исправить ошибку «Клиент OAuth не найден» из скрипта Bing Ads - PullRequest
0 голосов
/ 08 июля 2019

У нас на Bing есть скрипты для автоматической корректировки ставок на основе эффективности рекламы и целей клиента, которые хранятся в электронной таблице Google.

У нас изначально был подрядчик, и это сработало. Но я думаю, что подрядчик использовал временную учетную запись Google, и когда он ушел, участники торгов перестали работать. Поскольку раньше это работало, скорее всего, это ошибка конфигурации, которая сейчас ломает его, но подрядчик указал нам на шаги, которые я уже выполнял, но безрезультатно (https://docs.microsoft.com/en-us/advertising/scripts/examples/authenticating-with-google-services#option2).

Материал уже пробовал

  • дважды проверено на наличие ошибочных пробелов вокруг идентификатора клиента и секрета клиента
  • создал новые секреты клиента
  • созданы новые идентификаторы клиентов
  • убедился, что имя проекта, имя приложения и имя идентификатора клиента OAuth были одинаковыми
  • создал совершенно новые проекты с нуля (сконфигурированные так, чтобы соответствовать статье, приведенной выше), чтобы посмотреть, не удастся ли это что-то потерять
  • пробовал другой URL токена (https://oauth2.googleapis.com/token), который появляется в JSON-файле client_secret, загруженном из Google
function main() {

  const credentials = {
    accessToken: '',
      client_id: 'REDACTED.apps.googleusercontent.com', // from Google developer console
      client_secret: 'REDACTED', // from Google developer console
      refresh_token: 'REDACTED' // created at https://developers.google.com/oauthplayground
  };

  var access_token = '';
  if (credentials.accessToken) {
    access_token = credentials.accessToken;
  }
  var tokenResponse = UrlFetchApp.fetch('https://www.googleapis.com/oauth2/v4/token', { method: 'post', contentType: 'application/x-www-form-urlencoded', muteHttpExceptions: true, payload: { client_id: credentials.clientId, client_secret: credentials.clientSecret, refresh_token: credentials.refreshToken, grant_type: 'refresh_token' } });    
  var responseCode = tokenResponse.getResponseCode(); 
  var responseText = tokenResponse.getContentText(); 
  if (responseCode >= 200 && responseCode <= 299) {
    access_token = JSON.parse(responseText)['access_token'];
  }
  throw responseText;  

// use the access token to get client targets from the spreadsheet

Ожидаемый ответ - токен доступа в кодировке JSON, но вместо этого мы получаем HTTP 400 с сообщением «Клиент OAuth не найден».

Создание маркера доступа на площадке OAuth вручную (https://developers.google.com/oauthplayground) работает как временный интервал, но это должно работать. Это имеет сработало.: P

1 Ответ

0 голосов
/ 12 июля 2019

Исправлено в этом случае переключение Тип приложения на console.developers.google.com> Учетные данные> Экран согласия OAuth на Внутренний вместо Общедоступного.

Это не было выполнено в действиях, предоставленных Microsoft, иЯ не уверен, будет ли это иметь последствия в будущем, но, по крайней мере, сейчас мы отходим от ручного процесса.

...