Google API: Недійсне джерело для клієнта: URL-адреса не була внесена до білого списку для ідентифікатора клієнта “ID”


95

Мені потрібна допомога. Я не знайшов відповіді на своє запитання. Я спробував погуглити і спробувати запитати з інших сторін, але відповіді я так і не знайшов.

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

деталі: "Недійсне джерело для клієнта:" MyURL "не було внесено до білого списку для ідентифікатора клієнта" MyID ". Перейдіть на сторінку https://console.developers.google.com/ та додайте цей код у білий список для ідентифікатора клієнта вашого проекту. "

помилка: "idpiframe_initialization_failed"

Проблема, з якою я потрапив до веб-сайту, була прийнята. я не знаю, що не так. Що мені робити, щоб "додати" мій домен (до білого списку)

І ще одне питання. Я не шукав відповіді на це питання раніше.

Я думаю, що можливо, що я можу використовувати код на Localhost, я думаю, я повинен додати в білий список свою адресу localhost або щось подібне. Але білий список не працює.

  • DreamGamer

2
Все ще стикається з тією ж проблемою. Хто-небудь ще вирішив проблему?
Yashu Mittal

у моєму випадку використання httpвикликає проблему. перехід на httpsвирішує проблему.
Сяо

1
Тим, хто вже додав домен в авторизовані домени, просто очистіть кеш-пам’ять вашого сайту, це точно працюватиме, якщо всі дані встановлені по-справжньому.
Харіцін Гохіл,

Відповіді:


76

Була та сама проблема, і ось як я її вирішив:

  1. Активуйте у своєму проекті API Analytics та Google Plus
  2. Створіть нові облікові дані клієнта OAUTH 2.0
    • Додайте авторизовані джерела Javascript у розділі Обмеження
  3. Використовуйте новий ідентифікатор клієнта.

Насолоджуйтесь.


OMG Велике спасибі! Це працює для мене. Однією з моїх проблем було те, що я використовував ключ клієнта, а не ідентифікатор клієнта.
DreamGamer

4
Я повинен пояснити, що ЯКЩО ви вже створили oAuth для іншого порту; з якоїсь причини ви не можете повторно відредагувати порт, щоб використовувати інший. Я в основному "створив чергові облікові дані" для нового порту. Очевидно, це створить ще один маркер; так що просто захопіть його і скористайтеся цим. Ви можете зберігати обидва маркери в консолі.
Sam3k

Дякую! Це протилежне інтуїтивно, але це правильна відповідь. Дуже божевільний, що ви не можете просто додати потрібний API (що також не очевидно) до вашого існуючого ключа. Відтворення цілого конфігураційного ключа - це проблема.
beachCode

Ви хочете активувати API Googe Plus. Але яка взаємозв'язок між Youtube API та Google Plus API.
Яшу Міттал,

Я насправді не розумію взаємозв'язку, але це єдине, що спрацювало у мене (і в інших, мабуть).
Езра Обівале,

199

Я очистив кеш. Тоді почав працювати.

У Chrome: Налаштування -> Додатково -> Очистити дані веб-перегляду -> Кешовані зображення та файли


1
Дякую, я все зробив правильно і потрапив у біду.
cura

2
Це працювало для мене під час використання входу Google для мого веб-додатка. Дякую!
Sahil Lakhwani

1
Я вже одного разу проголосував за вас, коли це сталося зі мною кілька місяців тому, але ви заслуговуєте іншого ... +1
howMuchCheeseIsTooMuchCheese

1
Ця відповідь мені не допомогла.
тишма

2
Існує багато запитів. Я думаю, що один з них кешований браузером, і тому він не знає про зміни, які ви вносите в консолі API. Але я думаю, що простіше повністю вимкнути кеш, поки браузер DevTools відкритий. Найчастіше на вкладці "мережа" є опція (прапорець). Увімкнувши, що для оновлення сторінки досить оновлення сторінки.
Андреас Ліннерт,

16

Очищення кеш-пам'яті зробило для мене фокус


3
як тільки ви це зробите, не забудьте ввійти ще раз, щоб stackoverflow проголосував
Anand Rockzz

8

Спробуйте очистити кеш-пам'ять, це може бути проблемою з кеш-пам'яттю / локальним сховищем.


7

Для мене це працювало без додавання будь-яких додаткових API, таких як Google Analytics. Просто не забудьте додати повний клієнт і відкрийте програму у вікні анонімного перегляду, щоб уникнути збереження кешу. Якщо ви вже відкрили програму в звичайному вікні, 1- Закрийте всі вкладки, на яких відкрита програма. 2- Очищення кеш-пам’яті та файлів cookie. У chrome його в Налаштуваннях -> Паролі та форми -> Очистити дані перегляду -> Додатково (вкладка) -> виберіть а) Файли cookie та інші дані веб-сайту та б) Кешовані зображення та файли 3- Відкрийте нове вікно інкогніто та протестуйте додаток.


2
Не потрібно закривати всі теги, достатньо лише відкрити вікно анонімного перегляду.
Берт

3

У документації сказано, що не слід випускати з уваги два найважливіші кроки ("Під час проходження інструкцій важливо не пропускати ці два найважливіші кроки: Увімкнути API Analytics Ось, що мені вдалося :

  1. Увімкніть API Analytics
  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
Я пропоную спростити фрагмент коду, щоб покращити цю відповідь. Початковий виклик складає лише 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, але не у локального хоста: 8000.

локахост: 8000

Ось цікаве / дивне. Коли я пінгую localhost, я бачу:

IPV6

Я думаю, що це річ IPV6.

У будь-якому випадку, якщо я пінгую 127.0.0.1, я бачу очікувану відповідь (через IPV4)

IPV4

Можливо, це червоний оселедець, але я не був впевнений, чи вплинуло це на значення, введене в OAUTH, чи ні.

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

Лише після додавання localhost: 8000 URI в OAUTH це спрацювало, але після додавання він працював нормально.


2

Як багато хто вказував тут, це лише проблема кешування браузера. Не потрібно створювати новий ключ або навіть очищати кеш. Просто спробуйте ще раз у новому вікні анонімного (анонімного) браузера, і воно має працювати нормально.


1

Я мав подібну проблему, намагаючись отримати логін для мого веб-додатку. Що я зробив, це просто відтворив облікові дані ідентифікатора клієнта OAuth із Cloud Platform. Коли я зробив це і використовував новий ідентифікатор клієнта, все працювало нормально. Не впевнений, яка проблема була раніше, але зараз вона проходить цілком добре.

Якщо хтось знайде це в Google чи щось інше, спробуйте це. Це може просто спрацювати. Це пояснювало б відповідь Езри Обіуале, оскільки це, по суті, створення нового ідентифікатора клієнта відразу після додавання пари API.

Якщо хтось знає пояснення, чому це трапляється, це буде вдячне.


0

У мене була така сама проблема - рішенням для мене було зайти в Менеджер API і ввімкнути API Analytics. Не впевнений, у чому проблема, але, схоже, це вирішило!


1
Я ввімкнув API Analytics, але нічого не змінилося. : C
DreamGamer

0

Я вважаю, що це пов’язано з кешуванням, спробуйте перейти до браузера та очистити кеш-пам’ять, спробуйте: у chrome,> setting> advanced> очистити дані перегляду:>: кешовані зображення та файли.


0

Однією з причин, чому це не могло працювати, є перевищення кількості (100) входів на певні client ID.

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


0

У мене теж були ті самі проблеми, поки я не зрозумів, коли скопіював client_ID, у моєму файлі залишився пробіл, тому я вилучив пробіл із рядка, і зараз все працює чудово.


0

З тією ж проблемою я зіткнувся під час роботи з входом у Google за допомогою реакції-соціального-входу на своєму локальному хості. У вихідному списку білого списку нам доведеться вказати http: // localhost: 3000, щоб це працювало.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.