Google API: Bukan asal yang valid untuk klien: url belum diizinkan untuk "ID" ID klien

95

Saya butuh bantuan. Saya tidak menemukan jawaban untuk pertanyaan saya. Saya mencoba googling dan saya mencoba bertanya di sisi lain tetapi saya tidak pernah menemukan jawaban.

Saya bekerja dengan Google API (Youtube data API) dan saya menggunakan kode contoh dari sisi google kode itu bekerja Saya cukup yakin tentang itu. Saya mendapat kesalahan saat mencoba memulai Skrip:

detail: "Bukan asal yang valid untuk klien:" MyURL "belum diizinkan untuk ID klien" MyID ". Buka https://console.developers.google.com/ dan masukkan sumber ini ke daftar putih untuk ID klien proyek Anda. "

kesalahan: "idpiframe_initialization_failed"

Masalahnya saya memasukkan situs web saya ke daftar putih dan diterima. saya tidak tahu apa yang salah. Apa yang harus saya lakukan untuk "memasukkan ke dalam daftar putih" Domain saya (Masuk daftar putih)

Dan pertanyaan lain. Saya tidak mencari jawaban atas pertanyaan ini sebelumnya.

Saya pikir mungkin saja saya dapat menggunakan kode tersebut di Localhost, saya rasa saya harus memasukkan alamat localhost saya ke daftar putih atau sesuatu seperti ini. Tetapi daftar putih tidak berfungsi.

  • DreamGamer
DreamGamer
sumber
2
Masih menghadapi masalah yang sama. Adakah solusi lain untuk menyelesaikan masalah ini?
Yashu Mittal
dalam kasus saya, penggunaan httpmenyebabkan masalah. beralih untuk httpsmenyelesaikan masalah.
Xiao
1
Bagi mereka yang telah menambahkan domain di domain resmi, cukup bersihkan cache situs Anda, itu akan berfungsi pasti jika semua data disetel dengan benar.
Haritsinh Gohil

Jawaban:

76

Punya masalah yang sama dan inilah cara saya menyelesaikannya:

  1. Aktifkan API Analytics dan Google Plus di proyek Anda
  2. Buat kredensial klien OAUTH 2.0 baru
    • Tambahkan Asal Javascript Resmi di bawah bagian Pembatasan
  3. Gunakan id klien baru.

Nikmati.

Ezra Obiwale
sumber
OMG Terima kasih banyak! Ini bekerja untuk saya. Salah satu masalah saya adalah saya menggunakan kunci klien, bukan id klien.
DreamGamer
4
Saya harus menjelaskan bahwa JIKA Anda telah membuat oAuth untuk port yang berbeda; karena alasan tertentu, Anda tidak dapat mengedit ulang port untuk menggunakan port lain. Saya pada dasarnya "membuat kredensial lain" untuk port baru. Jelas, ini akan membuat token lain; jadi ambil saja dan gunakan itu sebagai gantinya. Anda dapat menyimpan kedua token di Konsol.
Sam3k
Terima kasih! Ini berlawanan dengan intuisi, tetapi itu jawaban yang benar. Sangat gila bahwa Anda tidak bisa hanya menambahkan API yang Anda butuhkan (yang juga tidak jelas) ke kunci Anda yang sudah ada. Membuat ulang seluruh konfigurasi untuk kuncinya sangat merepotkan.
beachCode
Anda mengatakan untuk mengaktifkan API Googe Plus. Tapi apa hubungan antara API Youtube dan API Google Plus.
Yashu Mittal
Saya tidak terlalu memahami korelasi di sini tetapi itu satu-satunya hal yang berhasil untuk saya (dan orang lain, tampaknya).
Ezra Obiwale
201

Saya mengosongkan cache. Mulai bekerja.

Di Chrome: Pengaturan -> Lanjutan -> Hapus data penjelajahan -> Gambar dan file cache

Manu Chadha
sumber
1
Terima kasih, saya melakukan segalanya dengan benar dan saya dalam masalah.
cura
2
Ini berfungsi untuk saya saat menggunakan masuk dengan Google untuk aplikasi web saya. Terima kasih!
Sahil Lakhwani
1
Saya sudah memberikan suara positif kepada Anda sekali ketika ini terjadi pada saya beberapa bulan yang lalu, tetapi Anda berhak mendapatkan yang lain ... +1
howMuchCheeseIsTooMuchCheese
1
Jawaban ini tidak membantu saya.
tishma
2
Ada banyak permintaan yang terjadi. Saya pikir salah satunya sedang di-cache oleh browser sehingga tidak tahu tentang perubahan yang Anda buat di Konsol API. Tapi saya pikir lebih mudah untuk menonaktifkan cache sepenuhnya saat Browser DevTools terbuka. Seringkali ada opsi (kotak centang) di tab "jaringan". Setelah mengaktifkan, refresh halaman sudah cukup untuk membuatnya berfungsi.
Andreas Linnert
16

Membersihkan cache berhasil bagi saya

Bastiyan
sumber
3
setelah Anda melakukan ini, jangan lupa untuk masuk lagi ke stackoverflow ke upvote
Anand Rockzz
8

Coba Kosongkan cache, mungkin ada masalah dengan cache / penyimpanan lokal.

Saurabh Agrawal
sumber
7

Bagi saya, ini berfungsi tanpa menambahkan API tambahan apa pun seperti google analytics. Pastikan untuk menambahkan clientid lengkap dan buka aplikasi di jendela penyamaran untuk menghindari penyimpanan cache. Jika sudah membuka aplikasi di jendela biasa, 1- Tutup semua tab tempat aplikasi terbuka. 2- Hapus cache dan cookie. Di chrome, ada di Pengaturan -> Kata sandi dan formulir -> Hapus data Penjelajahan -> Lanjutan (tab) -> pilih a) Cookie dan data situs lain dan b) Gambar dan file cache 3- Buka jendela penyamaran baru dan uji aplikasi.

pengguna3806770
sumber
2
Tidak perlu menutup semua tag, cukup membuka jendela penyamaran saja sudah cukup.
Bert Verhees
3

Dokumentasi mengatakan untuk tidak mengabaikan dua langkah penting ("Saat Anda mengikuti petunjuk, penting bahwa Anda tidak mengabaikan dua langkah penting ini: Mengaktifkan API Analytics. Inilah yang berhasil bagi saya:

  1. Aktifkan API Analytics
  2. kembali ke kredensial Anda, hapus OAuth 2.0 sebelumnya
  3. sekarang buat OAuth baru dengan asal yang benar
aravind siruvuru
sumber
2

Saya juga mengikuti petunjuk dalam contoh quickstart, Memiliki masalah yang sama, mencoba semua solusi yang disarankan di sini tidak berhasil, mencoba semua yang dapat saya bayangkan tetapi tidak membantu.

Akhirnya saya melihat bahwa saya menyalin CLIENT_IDdengan spasi di bagian akhir.

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

Setelah saya memperbaikinya (menghapus ruang ekstra) itu berhasil.

Saya kira pesan kesalahan tidak terlalu tepat dalam kasus ini. Semoga ini membantu.

Yossi Vainshtein
sumber
2

Saya baru saja melakukan kesalahan yang sama: Mencoba contoh panduan memulai resmi dan menerima pesan kesalahan yang sama dengan Anda.

Agak membingungkan, karena contoh itu jauh lebih kompleks daripada yang saya butuhkan secara pribadi: Ini menggunakan OAuth untuk login pengguna, dan BUKAN hanya file API key. Jika Anda seperti saya, dan Anda tidak ingin menggunakan OAuth, dan Anda hanya ingin mengambil beberapa data Youtube, tanpa tindakan yang diistimewakan (misalnya jika Anda hanya ingin mencari atau mendaftar video, saluran atau daftar putar), contohnya adalah untukmu.

Solusinya sederhana, cukup berikan apiKeyalih-alih clientIdke gapi.client.init(tautan: dokumen API ), seperti ini:

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
sumber
2
Saya sarankan untuk menyederhanakan cuplikan kode agar jawaban ini lebih baik. Panggilan init hanya 4 baris dan itulah satu-satunya hal yang berubah. Hal-hal lain tidak begitu membantu.
Charlie
Membersihkannya sedikit :)
Domi
2

Saya juga mencoba membuat sampel berfungsi (dari) https://developers.google.com/drive/api/v3/quickstart/js

Itu terus menerus gagal meskipun alamat ip ditambahkan ke WebAPI.

Tetapi Anda harus menambahkan localhost: 8000 (bukan hanya 127.0.0.1:8000) ke OAUTH Anda seperti yang ditunjukkan di sini:

Klien OAUTH

Mengambang di atas teks klien OAUTH dan itu akan menjadi tautan. Klik tautan itu dan Anda dapat menambahkan URI termasuk port. Punyaku sudah memiliki 127.0.0.1:8000 tetapi bukan locahost: 8000.

locahost: 8000

Inilah hal yang menarik / aneh. Ketika saya melakukan ping localhost saya melihat:

IPV6

Saya pikir itu adalah hal IPV6.

Bagaimanapun, jika saya melakukan ping 127.0.0.1 saya melihat respons yang diharapkan (melalui IPV4)

IPV4

Mungkin itu ikan haring merah, tapi saya tidak yakin apakah nilai yang dimasukkan di OAUTH terpengaruh atau tidak.

Alasan saya bahkan menyadarinya adalah karena ketika saya memulai server web Python seperti yang diarahkan dalam tutorial saya melihat yang berikut dan berpikir itu aneh: alamat ip python

Hanya setelah menambahkan localhost: 8000 URI di OAUTH berhasil, tetapi setelah menambahkan itu berfungsi dengan baik.

raddevus.dll
sumber
2

Seperti yang telah ditunjukkan banyak orang di sini, ini hanyalah masalah cache browser. Tidak perlu membuat kunci baru, atau bahkan menghapus cache. Coba lagi di jendela penyamaran (anonim) browser baru dan seharusnya berfungsi dengan baik.

Paulo
sumber
1

Saya mengalami masalah serupa saat mencoba masuk untuk aplikasi web saya. Yang saya lakukan hanyalah membuat ulang kredensial ID Klien OAuth dari Cloud Platform. Ketika saya melakukan ini dan menggunakan ID Klien baru, semuanya bekerja dengan baik. Tidak yakin apa masalahnya sebelumnya, tetapi sekarang sudah baik-baik saja.

Jika ada yang menemukan ini dari Google atau yang lainnya, coba saja. Ini mungkin berhasil. Ini akan menjelaskan jawaban Ezra Obiwale karena itu pada dasarnya membuat ID Klien baru setelah menambahkan beberapa API.

Jika ada yang tahu penjelasan mengapa ini terjadi, itu akan dihargai.

scoutchorton
sumber
1

Buat kredensial otorisasi

Aplikasi apa pun yang menggunakan OAuth 2.0 untuk mengakses Google API harus memiliki kredensial otorisasi yang mengidentifikasi aplikasi tersebut ke server OAuth 2.0 Google. Langkah-langkah berikut menjelaskan cara membuat kredensial untuk proyek Anda. Aplikasi Anda kemudian dapat menggunakan kredensial untuk mengakses API yang telah Anda aktifkan untuk proyek itu.

  1. Buka halaman Kredensial .
  2. Klik Buat kredensial> ID klien OAuth.
  3. Pilih jenis aplikasi aplikasi Web.
  4. Lengkapi formulir. Aplikasi yang menggunakan JavaScript untuk membuat permintaan Google API resmi harus menentukan asal JavaScript resmi . Asal mengidentifikasi domain tempat aplikasi Anda dapat mengirim permintaan ke server OAuth 2.0.
AnasBn
sumber
0

Saya mengalami masalah yang sama persis - solusi bagi saya adalah masuk ke Pengelola API dan mengaktifkan API Analytics. Tidak yakin apa masalahnya, tetapi tampaknya ini telah memperbaikinya!

Mathew Reiss
sumber
1
Saya mengaktifkan API Analytics tetapi tidak ada yang berubah. : C
DreamGamer
0

Saya yakin ini ada hubungannya dengan cache, coba Buka browser Anda dan hapus cache, coba: di chrome,> pengaturan> lanjutan> hapus data penjelajahan:>: gambar dan file cache.

Yonatan Fessehaye
sumber
0

Salah satu alasan mengapa itu tidak bisa berfungsi adalah melebihi jumlah (100) login tertentu client ID.

Anda dapat mengunjungi halaman konsol Google API dan membuat kredensial klien Oauth2 baru (ingat untuk menambahkan URL aplikasi Anda di bawah Authorized Javascript Origins) dan kemudian menggunakannya.

trojek
sumber
0

Saya mengalami masalah yang sama juga sampai saya menyadari ketika saya menyalin client_ID, ada ruang putih di file saya, jadi saya menghapus ruang putih dari string dan semuanya berfungsi dengan baik sekarang.

Kenneth Duverge
sumber
0

Saya menghadapi masalah yang sama saat bekerja dengan masuk google menggunakan react-social-login di localhost saya. Dalam whitelist origin kami harus menyediakan http: // localhost: 3000 untuk membuatnya berfungsi.

sunil yaduvanshi
sumber