Добавьте URI перенаправления к автоматически сгенерированному идентификатору клиента Google OAuth 2.0

Я пытаюсь создать лист Google, который интегрируется с API данных и аналитики YouTube. Однако при попытке реализовать это я столкнулся с известной проблемой, связанной с возможностью аутентификации учетных записей/каналов брендов YouTube с помощью приложения Google, что объясняется здесь. https://issuetracker.google.com/issues/36764531

Чтобы обойти это, в документе упоминаются инструкции по этой ссылке, которые я сейчас пытаюсь реализовать самостоятельно https://mashe.hawksey.info/2017/09/identity-crisis-using-the-youtube-api-with- google-apps-script-and-scheduling-live-трансляции-из-google-листов/

Из инструкции у меня:

  1. В скрипт импортированы необходимые библиотеки
  2. Добавлен необходимый код скрипта Google Apps, который находится внизу
  3. Создал свои собственные учетные данные идентификатора клиента OAuth 2.0 в Google Cloud Console.

Однако в первой ссылке также был добавлен комментарий о том, что хотя инструкции все еще работают, проект сценария теперь должен быть связан с облачным проектом, что я и сделал. В рамках этого он создал свой собственный идентификатор клиента OAuth 2.0, который, я полагаю, теперь использует, а не учетные данные, которые я уже создал сам. Я добавил изображение ниже, чтобы проиллюстрировать, что я имею в виду. Я также не могу редактировать эти новые учетные данные, что означает, что я не могу добавить какой-либо URI перенаправления.

Есть ли способ добавить URI перенаправления к автоматически сгенерированным учетным данным? Теперь проблема заключается в том, что если я затем запускаю функцию настройки из сценария в соответствии с инструкциями, когда я затем пытаюсь открыть эту ссылку, которую она мне дает, я получаю следующее сообщение

Ошибка 400: redirect_uri_mismatch

URI перенаправления в запросе https://script.google.com/macros/d/12u2laknmO_9-zgxBbAX6wG9gJDUOvgJmYm5UquJsamShus9s5McrGBar/usercallback не соответствует разрешенным для клиента OAuth. Чтобы обновить авторизованные URI перенаправления, посетите: https://console.developers.google.com/apis/credentials/oauthclient/${your_client_id}?project=${your_project_number}

/**
 * Authorizes and makes a request to the YouTube Data API.
 */
function setup() {
  var service = getYouTubeService();
  YouTube.setTokenService(function(){ return service.getAccessToken(); });
  if (service.hasAccess()) {
    var result = YouTube.channelsList("snippet", {mine:true});
    Logger.log(JSON.stringify(result, null, 2));
    throw "Open View > Logs to see result";
  } else {
    var authorizationUrl = service.getAuthorizationUrl();
    Logger.log('Open the following URL and re-run the script: %s',
        authorizationUrl);
    throw "Open View > Logs to get authentication url";
  }
}
 
 
/**
 * Configures the service.
 */
function getYouTubeService() {
  return OAuth2.createService('YouTube')
      // Set the endpoint URLs.
      .setAuthorizationBaseUrl('https://accounts.google.com/o/oauth2/auth')
      .setTokenUrl('https://accounts.google.com/o/oauth2/token')
 
      // Set the client ID and secret.
      .setClientId(getStaticScriptProperty_('client_id'))
      .setClientSecret(getStaticScriptProperty_('client_secret'))
 
      // Set the name of the callback function that should be invoked to complete
      // the OAuth flow.
      .setCallbackFunction('authCallback')
 
      // Set the property store where authorized tokens should be persisted
      // you might want to switch to Script Properties if sharing access
      .setPropertyStore(PropertiesService.getUserProperties())
 
      // Set the scope and additional Google-specific parameters.
      .setScope(["https://www.googleapis.com/auth/youtube",
      "https://www.googleapis.com/auth/youtube.force-ssl",
      "https://www.googleapis.com/auth/youtube.readonly",
      "https://www.googleapis.com/auth/youtubepartner",
      "https://www.googleapis.com/auth/youtubepartner-channel-audit"])
      .setParam('access_type', 'offline');
}
 
/**
 * Handles the OAuth callback.
 */
function authCallback(request) {
  var service = getYouTubeService();
  var authorized = service.handleCallback(request);
  if (authorized) {
    return HtmlService.createHtmlOutput('Success!');
  } else {
    return HtmlService.createHtmlOutput('Denied');
  }
}
 
/**
 * Logs the redirect URI to register in the Google Developers Console.
 */
function logRedirectUri() {
  var service = getYouTubeService();
  Logger.log(service.getRedirectUri());
  throw "Open View > Logs to get redirect url";
}
 
/**
 * Reset the authorization state, so that it can be re-tested.
 */
function reset() {
  var service = getYouTubeService();
  service.reset();
}
 
/**
 * Gets a static script property, using long term caching.
 * @param {string} key The property key.
 * @returns {string} The property value.
 */
function getStaticScriptProperty_(key) {
  var value = CacheService.getScriptCache().get(key);
  if (!value) {
    value = PropertiesService.getScriptProperties().getProperty(key);
    CacheService.getScriptCache().put(key, value, 21600);
  }
  return value;
}

Я надеюсь, что это ясно, но если нет, то я могу ответить на любые дополнительные вопросы. Или, если есть лучший способ аутентификации фирменной учетной записи YouTube с помощью API, сообщите мне об этом.

Я не могу понять насчёт add the redirect URI to the automatically generated credentials. Прошу прощения за это. Могу я спросить вас об этом?

Tanaike 13.12.2020 02:12

Да, поэтому, когда я связываю свой скрипт Google Apps с моим проектом Google Cloud Platform, я говорю, что затем он автоматически генерирует идентификатор клиента OAuth 2.0 (тот, который называется Apps Script на рисунке выше). Однако затем появляется желтый восклицательный знак, который сообщает мне, что я не могу редактировать эти учетные данные, что означает, что я не могу добавить какой-либо URI перенаправления. Теперь ясно?

DigM 13.12.2020 15:19

Спасибо за ответ. Из вашего ответа я понял об этом. В таком случае можете ли вы добавить новые учетные данные и протестировать их снова?

Tanaike 14.12.2020 01:07

Большое спасибо. Попробовали еще раз, и теперь, кажется, это работает. @Tanaike, есть ли причина, по которой это теперь сработает?

DigM 14.12.2020 14:02

Спасибо за ответ. Когда вы добавили новые учетные данные, я думаю, что это можно использовать для вашей ситуации. Я думаю, что учетные данные по умолчанию используются для авторизации с помощью скрипта Google Apps. При этом URL-адрес перенаправления не может быть изменен.

Tanaike 15.12.2020 01:39
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
5
1 336
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

У меня также возникла эта проблема, и я думаю, что в настоящее время невозможно добавить URI перенаправления при автоматическом создании ClientID через API, поскольку для редактирования доступны только поля «displayName», «name» и «secret» ( ссылка: cloud.google.com/iap/docs/reference/rest/v1/…).

felippe 08.01.2021 18:09

Другие вопросы по теме

Похожие вопросы

Сохранение данных строк электронной таблицы в PDF с использованием шаблона Gdoc с использованием скрипта Google Apps
Объедините два многомерных массива, сопоставив выбранный столбец, и верните новый массив со всеми строками и столбцами
Как разобрать данные API в гугл листы
Изменить значение ячейки в зависимости от цвета фона ячейки в Google Sheets
Блокировка ячейки после ввода данных только один раз с помощью скрипта Google Apps
Скрипт для запуска функции ImportRange по запросу
Сценарии приложений Google: как найти первую пустую ячейку в строке, проверить значение в следующем столбце и установить соответствующие значения
Как я могу продублировать и переименовать электронную таблицу с помощью скрипта?
Самый эффективный способ перебора всех элементов в массиве при добавлении элементов
Есть ли способ удалить выбор из раскрывающегося меню листов Google, если он выбран более определенного раза?