Interfejs API Google: nieprawidłowe źródło klienta: adres URL nie został umieszczony na białej liście identyfikatora klienta „ID”

97

Potrzebuję pomocy. Nie znalazłem odpowiedzi na swoje pytanie. Próbowałem googlować i pytać z innych stron, ale nigdy nie znalazłem odpowiedzi.

Pracuję z Google API (Youtube data API) i używam przykładowego kodu ze strony google, kod działa, jestem tego pewien. Wystąpił błąd, gdy próbuję uruchomić skrypt:

szczegóły: „Nieprawidłowe źródło dla klienta:„ MyURL ”nie zostało dodane do białej listy dla identyfikatora klienta„ MyID ”. Wejdź na https://console.developers.google.com/ i umieść to źródło na białej liście dla identyfikatora klienta swojego projektu. "

błąd: „idpiframe_initialization_failed”

Problem, który umieściłem na białej liście mojej witryny i został zaakceptowany. nie wiem, co jest nie tak. Co powinienem zrobić, aby umieścić moją domenę na białej liście (jest na białej liście)

I jeszcze jedno pytanie. Wcześniej nie szukałem odpowiedzi na to pytanie.

Myślę, że jest możliwe, że mogę użyć kodu na Localhost, myślę, że muszę dodać do białej listy mój adres localhost lub coś takiego. Ale biała lista nie działa.

  • DreamGamer
DreamGamer
źródło
2
Wciąż mam ten sam problem. Czy ktoś ma inne rozwiązanie problemu?
Yashu Mittal
w moim przypadku użycie httppowoduje problem. przejście na httpsrozwiązanie problemu.
Xiao
2
Dla tych, którzy już dodali domenę w autoryzowanych domenach, po prostu wyczyść pamięć podręczną swojej witryny, na pewno zadziała, jeśli wszystkie dane są naprawdę ustawione.
Haritsinh Gohil

Odpowiedzi:

79

Miałem ten sam problem i oto jak go rozwiązałem:

  1. Aktywuj interfejsy API Analytics i Google Plus w swoim projekcie
  2. Utwórz nowe poświadczenia klienta OAUTH 2.0
    • Dodaj autoryzowane źródła JavaScript w sekcji Ograniczenia
  3. Użyj nowego identyfikatora klienta.

Cieszyć się.

Ezra Obiwale
źródło
OMG Dziękuję bardzo! To działa dla mnie. Jednym z moich problemów było to, że użyłem klucza klienta, a nie identyfikatora klienta.
DreamGamer
4
Powinienem wyjaśnić, że JEŚLI już utworzyłeś OAuth dla innego portu; z jakiegoś powodu nie możesz ponownie edytować portu, aby użyć innego. Zasadniczo „utworzyłem kolejne poświadczenie” dla nowego portu. Oczywiście utworzy to kolejny token; więc po prostu chwyć go i użyj zamiast tego. Możesz zachować oba tokeny w konsoli.
Sam3k
Dzięki! Jest to sprzeczne z intuicją, ale to właściwa odpowiedź. Dość szalone, że nie możesz po prostu dodać API, którego potrzebujesz (co również nie jest oczywiste) do istniejącego klucza. Odtworzenie całej konfiguracji klucza jest uciążliwe.
beachCode
Mówisz, że chcesz aktywować API Googe Plus. Ale jaki jest związek między interfejsami API YouTube i interfejsami API Google Plus.
Yashu Mittal
Naprawdę nie rozumiem tej korelacji, ale to jedyna rzecz, która zadziałała dla mnie (i najwyraźniej innych).
Ezra Obiwale
215

Wyczyściłem pamięć podręczną. Zacząłem wtedy pracować.

W przeglądarce Chrome: Ustawienia -> Zaawansowane -> Wyczyść dane przeglądania -> Obrazy i pliki w pamięci podręcznej

Manu Chadha
źródło
1
Dziękuję, zrobiłem wszystko dobrze i miałem kłopoty.
cura
2
To zadziałało podczas korzystania z logowania Google do mojej aplikacji internetowej. Dzięki!
Sahil Lakhwani
1
Już raz cię zagłosowałem, kiedy mi się to przytrafiło kilka miesięcy temu, ale zasługujesz na kolejny ... +1
howMuchCheeseIsTooMuchCheese
1
Ta odpowiedź mi nie pomogła.
tishma
2
Jest wiele próśb. Myślę, że jeden z nich jest buforowany przez przeglądarkę, więc nie wie o zmianach wprowadzanych w konsoli API. Myślę jednak, że łatwiej jest całkowicie wyłączyć pamięć podręczną, gdy otwarte są narzędzia DevTool przeglądarki. W większości przypadków na karcie „sieć” jest dostępna opcja (pole wyboru). Po włączeniu wystarczy odświeżenie strony, aby działała.
Andreas Linnert
18

Wyczyszczenie pamięci podręcznej załatwiło sprawę

Bastiyan
źródło
3
gdy to zrobisz, nie zapomnij zalogować się ponownie do stackoverflow, aby zagłosować za
Anand Rockzz
9

Spróbuj wyczyścić pamięć podręczną, może to być problem z pamięcią podręczną / magazynem lokalnym.

Saurabh Agrawal
źródło
7

W moim przypadku działało bez dodawania jakichkolwiek dodatkowych interfejsów API, takich jak Google Analytics. Po prostu dodaj pełny identyfikator klienta i otwórz aplikację w oknie incognito, aby uniknąć zapisywania pamięci podręcznej. Jeśli już otworzyłeś aplikację w zwykłym oknie, 1- Zamknij wszystkie karty, w których jest otwarta aplikacja. 2- Wyczyść pamięć podręczną i pliki cookie. W przeglądarce Chrome jest w Ustawieniach -> Hasła i formularze -> Wyczyść dane przeglądania -> Zaawansowane (karta) -> wybierz a) Pliki cookie i inne dane witryn oraz b) Obrazy i pliki zapisane w pamięci podręcznej 3 - Otwórz nowe okno incognito i przetestuj aplikacja.

user3806770
źródło
2
Nie musisz zamykać wszystkich tagów, wystarczy otworzyć okno incognito.
Bert Verhees
4

Dokumentacja mówi, aby nie przeoczyć dwóch krytycznych kroków („Podczas przeglądania instrukcji ważne jest, aby nie przeoczyć tych dwóch krytycznych kroków: Włącz interfejs API Analytics. Oto, co mi pomogło:

  1. Włącz interfejs API Analytics
  2. Wróć do poświadczeń, usuń poprzednią wersję OAuth 2.0
  3. teraz utwórz nową OAuth z poprawnymi źródłami
Aravind Siruvuru
źródło
2

Postępowałem również zgodnie z instrukcjami z przykładu szybkiego startu. Miałem ten sam problem, wypróbowałem wszystkie sugerowane tutaj rozwiązania bezskutecznie, wypróbowałem wszystko, co mogłem sobie wyobrazić, ale to nie pomogło.

Wreszcie zobaczyłem, że skopiowałem CLIENT_IDznak ze spacją na końcu.

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

Po naprawieniu tego (usunięciu dodatkowej przestrzeni) zadziałało.

Myślę, że komunikat o błędzie nie jest w tym przypadku zbyt dokładny. Mam nadzieję że to pomoże.

Yossi Vainshtein
źródło
2

Właśnie popełniłem ten sam błąd: wypróbowałem oficjalny przykład szybkiego startu i otrzymałem ten sam komunikat o błędzie co Ty.

Jest to raczej mylące, ponieważ ten przykład jest o wiele bardziej złożony niż to, czego osobiście potrzebowałem: wykorzystuje OAuth do logowania użytkownika, a NIE tylko API key. Jeśli jesteś podobny do mnie i nie chcesz używać OAuth, a chcesz tylko odzyskać niektóre dane z YouTube, bez żadnych uprzywilejowanych działań (np. Jeśli chcesz tylko wyszukiwać lub wyświetlać filmy, kanały lub listy odtwarzania), ten przykład to dla Was.

Rozwiązanie jest proste, wystarczy dostarczyć apiKeyzamiast clientIddo gapi.client.init(Link: Dokumentacja API ), tak jak poniżej:

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....
      });
  }
});
Domi
źródło
2
Proponuję uprościć fragment kodu, aby ta odpowiedź była lepsza. Wywołanie inicjujące to tylko 4 linie i to naprawdę jedyna rzecz, która się zmienia. Inne rzeczy nie są tak pomocne.
Charlie
Trochę
posprzątałem
2

Próbowałem też uruchomić próbkę (od) https://developers.google.com/drive/api/v3/quickstart/js

Ciągle zawodziło, mimo że adres IP został dodany do interfejsu WebAPI.

Ale musisz dodać localhost: 8000 (nie tylko 127.0.0.1:8000) do swojego OAUTH, jak pokazano tutaj:

Klient OAUTH

Najedź na tekst klienta OAUTH, a stanie się on łączem. Kliknij to łącze, aby dodać identyfikator URI, w tym port. Mój miał już 127.0.0.1:8000, ale nie locahost: 8000.

locahost: 8000

Oto interesująca / dziwna rzecz. Kiedy pinguję localhost, widzę:

IPV6

Myślę, że to kwestia protokołu IPV6.

W każdym razie, jeśli pinguję 127.0.0.1, widzę oczekiwaną odpowiedź (przez IPV4)

IPV4

Może to czerwony śledź, ale nie byłem pewien, czy ma to wpływ na wartość wpisaną w OAUTH, czy nie.

Powodem, dla którego nawet to zauważyłem, jest to, że kiedy uruchomiłem serwer sieciowy Python zgodnie z zaleceniami w samouczku, zobaczyłem następujące rzeczy i pomyślałem, że to dziwne: adres ip pythona

Dopiero po dodaniu localhost: 8000 URI w OAUTH zadziałało, ale po dodaniu działało dobrze.

raddevus
źródło
2

Jak wielu tutaj wskazało, jest to tylko problem z pamięcią podręczną przeglądarki. Nie ma potrzeby tworzenia nowego klucza ani nawet czyszczenia pamięci podręcznej. Po prostu spróbuj ponownie w nowym oknie incognito (anonimowym) przeglądarki i powinno działać dobrze.

Paulo
źródło
1

Miałem podobny problem podczas próby logowania się do mojej aplikacji internetowej. Właśnie odtworzyłem dane uwierzytelniające identyfikatora klienta OAuth z Cloud Platform. Kiedy to zrobiłem i użyłem nowego identyfikatora klienta, wszystko działało dobrze. Nie jestem pewien, na czym polegał problem, ale teraz przechodzi doskonale.

Jeśli ktoś znajdzie to w Google lub w czymkolwiek, spróbuj tego. Może po prostu zadziała. To wyjaśniałoby odpowiedź Ezry Obiwale, ponieważ zasadniczo polega to na utworzeniu nowego identyfikatora klienta zaraz po dodaniu kilku interfejsów API.

Jeśli ktoś zna wyjaśnienie, dlaczego tak się dzieje, będzie to mile widziane.

scoutchorton
źródło
1

Utwórz dane uwierzytelniające

Każda aplikacja korzystająca z protokołu OAuth 2.0 w celu uzyskania dostępu do interfejsów API Google musi mieć dane uwierzytelniające, które identyfikują aplikację na serwerze Google OAuth 2.0. Poniższe kroki wyjaśniają, jak utworzyć poświadczenia dla projektu. Twoje aplikacje mogą następnie używać poświadczeń do uzyskiwania dostępu do interfejsów API, które zostały włączone dla tego projektu.

  1. Przejdź do strony Poświadczenia .
  2. Kliknij Utwórz dane logowania> Identyfikator klienta OAuth.
  3. Wybierz typ aplikacji internetowej.
  4. Wypełnić formularz. Aplikacje używające JavaScript do wysyłania autoryzowanych żądań interfejsu API Google muszą określać autoryzowane źródła JavaScript . Źródła określają domeny, z których aplikacja może wysyłać żądania do serwera OAuth 2.0.
AnasBn
źródło
0

Miałem dokładnie ten sam problem - rozwiązaniem dla mnie było przejście do Menedżera API i włączenie API Analytics. Nie jestem pewien, na czym polegał problem, ale wydaje się, że to go rozwiązało!

Mathew Reiss
źródło
2
Włączyłem API Analytics, ale nic się nie zmieniło. : C
DreamGamer
0

Uważam, że ma to związek z buforowaniem, spróbuj przejść do przeglądarki i wyczyścić pamięć podręczną, spróbuj: w chrome,> ustawienia> zaawansowane> wyczyść dane przeglądania:>: obrazy i pliki z pamięci podręcznej.

Yonatan Fessehaye
źródło
0

Jednym z powodów, dla których nie mógł on działać, jest przekroczenie liczby (100) logowań na niektórych client ID.

Możesz odwiedzić stronę konsoli Google API i utworzyć nowe dane logowania klienta Oauth2 (pamiętaj, aby dodać adres URL aplikacji pod Authorized Javascript Origins), a następnie ich użyć.

trojek
źródło
0

Miałem te same problemy, dopóki nie zdałem sobie sprawy, że kiedy skopiowałem client_ID, w moim pliku jest biały znak, więc usunąłem biały znak z ciągu i wszystko działa świetnie.

Kenneth Duverge
źródło
0

Napotkałem ten sam problem podczas pracy z logowaniem do Google przy użyciu React-Social-login na moim hoście lokalnym. W źródle białej listy będziemy musieli podać http: // localhost: 3000, aby działał.

sunil yaduvanshi
źródło