Google API: İstemci için geçerli bir kaynak değil: url, "ID" müşteri kimliği için beyaz listeye alınmamış


95

Yardıma ihtiyacım var. Soruma bir cevap bulamadım. Googling yapmayı denedim ve diğer taraflardan sormayı denedim ama asla bir cevap bulamadım.

Google API (Youtube data API) ile çalışıyorum ve çalıştığı kodun google tarafındaki örnek kodunu kullanıyorum bundan oldukça eminim. Komut Dosyasını başlatmaya çalıştığımda bir hata aldım:

ayrıntılar: "Müşteri için geçerli bir kaynak değil:" MyURL "," MyID "müşteri kimliği için beyaz listeye alınmadı. Lütfen https://console.developers.google.com/ adresine gidin ve projenizin müşteri kimliği için bu kaynağı beyaz listeye ekleyin. "

hata: "idpiframe_initialization_failed"

Web sitemi beyaz listeye aldığım sorun kabul edildi. neyin yanlış olduğunu bilmiyorum Alan adımı "beyaz listeye eklemek" için ne yapmalıyım (Beyaz listeye eklenmiştir)

Ve başka bir soru. Daha önce bu soruya cevap aramadım.

Kodu Localhost'ta kullanmamın mümkün olduğunu düşünüyorum, yerel ana bilgisayar adresimi veya bunun gibi bir şeyi beyaz listeye almam gerektiğini düşünüyorum. Ancak beyaz listeye alma işe yaramıyor.

  • DreamGamer

2
Hala aynı sorunla karşı karşıya. Sorunu çözmek için başka bir çözümü var mı?
Yashu Mittal

benim durumumda kullanmak httpsoruna neden oluyor. seçeneğine geçmek httpssorunu çözer.
Xiao

1
Yetkili etki alanlarına zaten etki alanı eklemiş olanlar için, sitenizin önbelleğini temizleyin, tüm veriler doğru ayarlanmışsa kesinlikle çalışacaktır.
Haritsinh Gohil

Yanıtlar:


76

Aynı sorunu yaşadım ve işte nasıl çözdüm:

  1. Projenizde hem Analytics hem de Google Plus API'lerini etkinleştirin
  2. Yeni OAUTH 2.0 istemci kimlik bilgileri oluşturun
    • Yetkilendirilmiş Javascript Kökenlerini Kısıtlamalar bölümü altına ekleyin
  3. Yeni müşteri kimliğini kullanın.

Zevk almak.


OMG Çok teşekkür ederim! Benim için çalışıyor. Sorunumdan biri, müşteri kimliğini değil müşteri anahtarını kullanmamdı.
DreamGamer

4
Farklı bir bağlantı noktası için zaten bir oAuth oluşturduysanız; bazı nedenlerden dolayı, bağlantı noktasını farklı bir tane kullanmak için yeniden düzenleyemezsiniz. Temel olarak yeni bağlantı noktası için "başka bir kimlik bilgisi oluşturdum". Açıkçası, bu başka bir simge yaratacaktır; bu yüzden sadece alın ve onun yerine kullanın. Her iki jetonu da Console'da tutabilirsiniz.
Sam3k

Teşekkürler! Karşıt sezgiseldir, ancak doğru cevap budur. Oldukça çılgınca, ihtiyacınız olan API'yi (ki bu da açık değil) mevcut anahtarınıza ekleyemiyorsunuz. Anahtar için tüm yapılandırmayı yeniden oluşturmak bir acıdır.
beachCode

Googe Plus API'lerini etkinleştirmeyi söylüyorsunuz. Ancak Youtube API'leri ile Google Plus API'leri arasındaki ilişki nedir?
Yashu Mittal

Buradaki korelasyonu gerçekten anlamıyorum ama benim için işe yarayan tek şey (ve görünüşe göre diğerleri).
Ezra Obiwale

201

Önbelleği temizledim. Sonra çalışmaya başladım.

Chrome'da: Ayarlar -> Gelişmiş -> Tarama verilerini temizle -> Önbelleğe alınmış resimler ve dosyalar


1
Teşekkür ederim, her şeyi doğru yaptım ve başım beladaydı.
cura

2
Bu, web uygulamam için Google oturum açma özelliğini kullanırken işime yaradı. Teşekkürler!
Sahil Lakhwani

1
Bu birkaç ay önce başıma geldiğinde size bir kez daha oy vermiştim, ama başka bir ... +1
howMuchCheeseIsTooMuchCheese

1
Bu cevap bana yardımcı olmadı.
tishma

2
Devam eden bir çok istek var. Sanırım bunlardan biri tarayıcı tarafından önbelleğe alındı ​​ve bu nedenle API Konsolunda yaptığınız değişiklikleri bilmiyor. Ancak Browser DevTools açıkken önbelleği tamamen devre dışı bırakmanın daha kolay olduğunu düşünüyorum. Çoğu zaman "ağ" sekmesinde bir seçenek (onay kutusu) vardır. Bunu etkinleştirdikten sonra, çalışması için sayfanın yenilenmesi yeterlidir.
Andreas Linnert

16

Önbelleği temizlemek benim için hile yaptı


3
bunu yaptıktan sonra, oy vermek üzere stackoverflow için tekrar oturum açmayı unutmayın
Anand Rockzz

8

Önbelleği temizlemeyi deneyin, önbellek / yerel depolama ile ilgili bir sorun olabilir.


7

Benim için, google analytics gibi herhangi bir ek API eklemeden çalıştı. Önbelleği kaydetmekten kaçınmak için tam istemci kimliğini eklediğinizden ve uygulamayı gizli pencerede açtığınızdan emin olun. Uygulamayı zaten normal pencerede açtıysanız, 1- Uygulamanın açık olduğu tüm sekmeleri kapatın. 2- Önbelleği ve çerezleri temizleyin. Chrome'da, Ayarlar -> Şifreler ve formlar -> Tarama verilerini temizle -> Gelişmiş (sekme) -> a) Çerezler ve diğer site verilerini seçin ve b) Önbelleğe alınmış resimler ve dosyalar 3- Yeni bir gizli pencere açın ve app.


2
Tüm etiketleri kapatmanıza gerek yok, sadece gizli bir pencere açmanız yeterli.
Bert Verhees

3

Belgeler, iki kritik adımı gözden kaçırmamanızı söylüyor ("Talimatları incelerken, bu iki kritik adımı gözden kaçırmamanız önemlidir: Analytics API'yi etkinleştirin İşte benim için ne işe yaradı:

  1. Analytics API'yi etkinleştirin
  2. kimlik bilgilerinize geri dönün, önceki OAuth 2.0'ı silin
  3. şimdi doğru kaynaklara sahip yeni OAuth oluşturun

2

Hızlı başlangıç ​​örneğindeki talimatları da takip ettim, Aynı sorun vardı, burada önerilen tüm çözümleri boşuna denedim, hayal edebileceğim her şeyi denedim ama yardımcı olmadı.

Sonunda CLIENT_ID, sonunda boşluk bırakarak kopyaladığımı gördüm .

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

Bunu düzelttikten sonra (fazladan alanı kaldırdım) işe yaradı.

Sanırım bu durumda hata mesajı çok kesin değil. Bu yardımcı olur umarım.


2

Ben de aynı hatayı yaptım: Resmi hızlı başlangıç ​​örneğini denedim ve sizinle aynı hata mesajını aldım .

Bu oldukça kafa karıştırıcı, çünkü bu örnek kişisel olarak ihtiyaç duyduğumdan çok daha karmaşık: Kullanıcı girişi için OAuth kullanıyor ve yalnızca API key. Benim gibiyseniz ve OAuth'u kullanmak istemiyorsanız ve herhangi bir ayrıcalıklı işlem yapmadan yalnızca bazı Youtube verilerini almak istiyorsanız (örneğin, yalnızca videoları, kanalları veya oynatma listelerini aramak veya listelemek istiyorsanız), bu örnek senin için.

Çözüm basittir, sadece to (link: API docs ) apiKeyyerine sağlayın , örneğin:clientIdgapi.client.init

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
Bu yanıtı daha iyi hale getirmek için kod pasajını basitleştirmenizi öneririm. Başlangıç ​​çağrısı yalnızca 4 satırdır ve bu gerçekten değişen tek şeydir. Diğer şeyler pek yardımcı olmuyor.
Charlie

Biraz temizledim :)
Domi

2

Ayrıca örneği https://developers.google.com/drive/api/v3/quickstart/js adresinden çalıştırmaya çalışıyordum

IP adresi WebAPI'ye eklenmesine rağmen sürekli olarak başarısız oldu.

Ancak, burada gösterildiği gibi OAUTH'nize localhost: 8000 (sadece 127.0.0.1:8000 değil) eklemeniz gerekir:

OAUTH istemcisi

OAUTH istemci metni üzerinde gezinin ve bir bağlantı haline gelecektir. Bu bağlantıya tıklayın ve bağlantı noktasını içeren bir URI ekleyebilirsiniz. Benimki zaten 127.0.0.1:8000'e sahipti ama locahost yoktu: 8000.

locahost: 8000

İşte ilginç / tuhaf şey. Localhost'a ping attığımda şunu görüyorum:

IPV6

Bunun IPV6 olayı olduğunu düşünüyorum.

Her neyse, 127.0.0.1'e ping atarsam beklenen yanıtı görüyorum (IPV4 aracılığıyla)

IPV4

Belki bu bir kırmızı ringa balığı ama OAUTH'a girilen değerin bundan etkilenip etkilenmediğinden emin değildim.

Bunu fark etmemin bile nedeni, eğiticide belirtildiği gibi Python web sunucusunu başlattığımda aşağıdakileri gördüm ve garip olduğunu düşündüm: python ip adresi

Yalnızca localhost: 8000 URI'yi OAUTH'a ekledikten sonra işe yaradı, ancak ekledikten sonra iyi çalıştı.


2

Birçoğunun burada belirttiği gibi, bu yalnızca bir tarayıcı önbelleği sorunudur. Yeni bir anahtar oluşturmanıza, hatta önbelleği temizlemenize gerek yok. Yeni bir gizli tarayıcı penceresinde (anonim) tekrar deneyin ve düzgün çalışması gerekir.


1

Web uygulamam için oturum açmaya çalışırken benzer bir sorun yaşıyordum. Yaptığım şey, Cloud Platform'dan OAuth İstemci Kimliği kimlik bilgilerini yeniden oluşturmaktı. Bunu yaptığımda ve yeni İstemci Kimliğini kullandığımda her şey yolunda gitti. Sorunun daha önce ne olduğundan emin değilim, ama şimdi gayet iyi gidiyor.

Biri bunu Google'dan bulursa veya başka bir şey bulursa, deneyin. Sadece işe yarayabilir. Ezra Obiwale'nin cevabını açıklıyordu çünkü bu aslında birkaç API ekledikten hemen sonra yeni bir İstemci Kimliği oluşturmaktır.

Bunun neden olduğuna dair bir açıklama bilen varsa, bu takdir edilecektir.


0

Ben de tam olarak aynı sorunu yaşıyordum - benim için çözüm, API Yöneticisine gidip Analytics API'yi etkinleştirmekti. Sorunun ne olduğundan emin değilim, ancak bu sorunu çözmüş görünüyor!


1
Analytics API'yi etkinleştirdim ancak hiçbir şey değişmedi. : C
DreamGamer

0

Bunun önbelleğe alma ile ilgisi olduğuna inanıyorum, tarayıcınıza gitmeyi ve önbelleği temizlemeyi deneyin, şunu deneyin: chrome'da,> setting> advanced> tarama verilerini temizle:>: önbelleğe alınmış resimler ve dosyalar.


0

Çalışamamasının nedenlerinden biri de belirli oturum açma sayısının (100) aşılmasıdır client ID.

Google API konsolu sayfasını ziyaret edebilir ve yeni Oauth2 istemci kimlik bilgileri oluşturabilir (uygulama URL'nizi altına eklemeyi unutmayın Authorized Javascript Origins) ve ardından kullanabilirsiniz.


0

Client_ID'yi kopyaladığımda, dosyamda beyaz boşluk olduğunu fark edene kadar aynı sorunları yaşıyordum, bu yüzden dizeden beyaz alanı kaldırdım ve şimdi her şey harika çalışıyor.


0

Yerel ana makinemde react-social-login kullanarak google oturum açma ile çalışırken aynı sorunla karşılaştım. Beyaz liste kaynağında, çalışmasını sağlamak için http: // localhost: 3000 sağlamamız gerekecek .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.