Google API: недействительный источник для клиента: URL-адрес не внесен в белый список для идентификатора клиента «ID»


95

Мне нужна помощь. Я не нашел ответа на свой вопрос. Я пробовал гуглить и спрашивал с других сторон, но так и не нашел ответа.

Я работаю с API Google (API данных Youtube), и я использую пример кода со стороны Google, код, который он работает, я почти уверен в этом. Я получаю сообщение об ошибке при запуске скрипта:

подробности: «Недействительный источник для клиента:« MyURL »не был включен в белый список для идентификатора клиента« MyID ». Перейдите на https://console.developers.google.com/ и внесите этот источник в белый список для идентификатора клиента вашего проекта. "

ошибка: "idpiframe_initialization_failed"

Проблема. Я внес свой веб-сайт в белый список, и он принят. я не знаю что не так. Что мне делать, чтобы добавить мой домен в белый список (он включен в белый список)

И еще вопрос. Я раньше не искал ответа на этот вопрос.

Я думаю, что вполне возможно, что я могу использовать код на Localhost, я думаю, что должен внести свой адрес localhost в белый список или что-то в этом роде. Но белые списки не работают.

  • DreamGamer

2
По-прежнему сталкиваюсь с той же проблемой. Есть ли у кого-нибудь другое решение для решения проблемы?
Яшу Миттал

в моем случае использование httpвызывает проблему. переход на httpsрешает проблему.
Сяо

1
Тем, кто уже добавил домен в авторизованные домены, просто очистите кеш своего сайта, он обязательно будет работать, если все данные установлены правильно.
Haritsinh Gohil

Ответы:


76

Была такая же проблема, и вот как я ее решил:

  1. Активируйте в своем проекте API Analytics и Google Plus.
  2. Создайте новые учетные данные клиента OAUTH 2.0
    • Добавьте авторизованные источники Javascript в раздел ограничений
  3. Используйте новый идентификатор клиента.

Наслаждаться.


OMG Большое вам спасибо! Это сработало для меня. Одна из моих проблем заключалась в том, что я использовал клиентский ключ, а не идентификатор клиента.
DreamGamer

4
Я должен прояснить это, ЕСЛИ вы уже создали oAuth для другого порта; по какой-то причине вы не можете повторно отредактировать порт, чтобы использовать другой. Я в основном «создал другие учетные данные» для нового порта. Очевидно, это создаст еще один токен; так что просто возьмите его и используйте вместо этого. Вы можете оставить оба токена в консоли.
Sam3k 08

Благодарность! Это нелогично, но это правильный ответ. Довольно безумно, что вы не можете просто добавить нужный API (что тоже не очевидно) к существующему ключу. Воссоздавать всю конфигурацию для ключа очень сложно.
beachCode

Вы говорите активировать API Googe Plus. Но какова связь между API Youtube и API Google Plus?
Яшу Миттал

Я действительно не понимаю корреляцию здесь, но это единственное, что сработало для меня (и, по-видимому, других).
Эзра Обивале

201

Я очистил кеш. Тогда начал работать.

В Chrome: Настройки -> Дополнительно -> Очистить данные просмотра -> Кешированные изображения и файлы.


1
Спасибо, все сделал правильно и у меня были проблемы.
cura

2
Это сработало для меня при использовании входа в Google для моего веб-приложения. Благодарность!
Сахил Лахвани

1
Я уже проголосовал за вас однажды, когда это случилось со мной несколько месяцев назад, но вы заслуживаете другого ... +1
howMuchCheeseIsTooMuchCheese

1
Этот ответ мне не помог.
tishma

2
Поступает много запросов. Я думаю, что один из них кэшируется браузером, поэтому он не знает об изменениях, которые вы делаете в консоли API. Но я думаю, что проще полностью отключить кеш, пока открыты Browser DevTools. В большинстве случаев на вкладке «сеть» есть опция (флажок). После включения этого обновления страницы достаточно, чтобы она заработала.
Андреас Линнерт

16

Очистка кеша помогла мне


3
как только вы это сделаете, не забудьте снова войти в систему, чтобы stackoverflow, чтобы проголосовать за
Ананд Рокзз


7

Для меня это сработало без добавления каких-либо дополнительных API, таких как Google Analytics. Просто не забудьте добавить всех клиентов и открыть приложение в режиме инкогнито, чтобы не сохранять кеш. Если приложение уже было открыто в обычном окне, 1- Закройте все вкладки, на которых открыто приложение. 2- Очистить кеш и файлы cookie. В Chrome это в Настройки -> Пароли и формы -> Очистить данные просмотра -> Дополнительно (вкладка) -> выберите а) Файлы cookie и другие данные сайта и б) Кэшированные изображения и файлы 3 - Откройте новое окно в режиме инкогнито и проверьте свой приложение.


2
Не нужно закрывать все теги, достаточно открыть окно в режиме инкогнито.
Берт Верхис

3

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

  1. Включите Analytics API
  2. вернемся к вашим учетным данным, удалите предыдущий OAuth 2.0
  3. теперь создайте новый OAuth с правильным происхождением

2

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

Наконец увидел, что я скопировал CLIENT_IDс пробелом в конце.

  var CLIENT_ID = '44********-*****************.apps.googleusercontent.com ';

Как только я исправил это (удалил лишнее пространство), все заработало.

Я предполагаю, что в этом случае сообщение об ошибке не очень точное. Надеюсь это поможет.


2

Я совершил ту же ошибку: попробовал официальный пример быстрого запуска и получил то же сообщение об ошибке, что и вы.

Это довольно сбивает с толку, потому что этот пример намного сложнее, чем то, что мне лично нужно: он использует OAuth для входа пользователя, а НЕ только файл API key. Если вы похожи на меня, и вы не хотите использовать OAuth, и вы хотите получить только некоторые данные Youtube без каких-либо привилегированных действий (например, если вы хотите только искать или перечислять видео, каналы или плейлисты), этот пример для тебя.

Решение простое, просто предоставить apiKeyвместо clientIdк gapi.client.init(ссылка: API Docs ), например , так:

const apiKey = '<my API key>';

function gooApiInitClient() {
  // Array of API discovery doc URLs for APIs used by the quickstart
  const discoveryDocs = [
    "https://www.googleapis.com/discovery/v1/apis/youtube/v3/rest"
  ];

  return gapi.client.init({
    apiKey,
    discoveryDocs
  });
}

// see: https://developers.google.com/api-client-library/javascript/reference/referencedocs
gapi.load('client', {
  callback: function() {
    // we now have gapi.client! initialize it.
    gooApiInitClient().
      then(() => {
        // we can start using the API here!
        // e.g. gapi.client.youtube.videos.list(...);
      }).then(results => { 
        // use results here....
      });
  }
});

2
Я предлагаю упростить фрагмент кода, чтобы лучше ответить. Вызов init - это всего 4 строки, и это единственное, что меняется. Остальное не так полезно.
Чарли

Немного
Доми

2

Я также пытался заставить образец работать (из) https://developers.google.com/drive/api/v3/quickstart/js

Это постоянно не удавалось, даже если IP-адрес был добавлен в WebAPI.

Но вам нужно добавить localhost: 8000 (а не только 127.0.0.1:8000) в свой OAUTH, как показано здесь:

Клиент OAUTH

Обведите текст клиента OAUTH, и он станет ссылкой. Щелкните эту ссылку, и вы можете добавить URI, включая порт. У меня уже было 127.0.0.1:8000, но не locahost: 8000.

местонахождение: 8000

Вот что интересно / странно. Когда я пингую локальный хост, я вижу:

IPV6

Я думаю, что это IPV6.

В любом случае, если я пингую 127.0.0.1, я вижу ожидаемый ответ (через IPV4)

IPV4

Возможно, это отвлекающий маневр, но я не был уверен, повлияло ли это на значение, введенное в OAUTH, или нет.

Причина, по которой я даже заметил это, заключается в том, что когда я запустил веб-сервер Python, как указано в руководстве, я увидел следующее и подумал, что это странно: ip-адрес python

Только после добавления URI localhost: 8000 в OAUTH он заработал, но после добавления он работал нормально.


2

Как многие указали здесь, это просто проблема кеширования браузера. Не нужно создавать новый ключ или даже очищать кеш. Просто попробуйте еще раз в новом окне браузера в режиме инкогнито (анонимно), и все должно работать нормально.


1

У меня возникла аналогичная проблема при попытке получить логин для моего веб-приложения. Я просто воссоздал учетные данные идентификатора клиента OAuth из Cloud Platform. Когда я сделал это и использовал новый идентификатор клиента, все работало нормально. Не уверен, в чем проблема была раньше, но теперь она проходит отлично.

Если кто-то найдет это из Google или еще чего-то, попробуйте это. Это может сработать. Это объяснило бы ответ Эзры Обивале, потому что по сути он создает новый идентификатор клиента сразу после добавления пары API.

Если кто-нибудь знает объяснение того, почему это происходит, это будет оценено.


0

У меня была точно такая же проблема - решение для меня заключалось в том, чтобы зайти в API Manager и включить Analytics API. Не уверен, в чем была проблема, но, похоже, это решило ее!


1
Я включил Analytics API, но ничего не изменилось. : C
DreamGamer

0

Я считаю, что это связано с кешированием, попробуйте перейти в свой браузер и очистить кеш, попробуйте: в chrome,> настройка> расширенный> очистить данные просмотра:>: кэшированные изображения и файлы.


0

Одна из причин, по которой он не может работать - превышение количества (100) логинов на определенных client ID.

Вы можете посетить страницу консоли API Google и создать новые учетные данные клиента Oauth2 (не забудьте добавить URL-адрес своего приложения Authorized Javascript Origins), а затем использовать его.


0

У меня были те же проблемы, пока я не понял, когда я скопировал client_ID, в моем файле было пустое пространство, поэтому я удалил пустое пространство из строки, и теперь все работает отлично.


0

Я столкнулся с той же проблемой при работе с входом в Google с помощью response-social-login на моем локальном хосте. В источнике белого списка нам нужно будет указать http: // localhost: 3000, чтобы он работал.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.