У нас на 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