Google API : 클라이언트의 유효한 출처가 아닙니다. URL이 클라이언트 ID 'ID'에 허용되지 않았습니다.


95

도움이 필요합니다. 내 질문에 대한 답을 찾지 못했습니다. 인터넷 검색을 시도하고 다른 쪽에서 물어 보았지만 답을 찾지 못했습니다.

저는 Google API (Youtube 데이터 API)를 사용하고 있으며 Google 측의 예제 코드를 사용하여 작동하는 코드를 사용하고 있습니다. 스크립트를 시작하려고 할 때 오류가 발생했습니다.

세부 정보 : "클라이언트의 유효한 출처가 아닙니다."MyURL "이 클라이언트 ID"MyID "에 대해 허용되지 않았습니다. https://console.developers.google.com/으로 이동 하여이 출처를 프로젝트의 클라이언트 ID에 허용 목록에 추가하세요. "

오류 : "idpiframe_initialization_failed"

내 웹 사이트를 허용 목록에 추가 한 문제가 승인되었습니다. 나는 무엇이 잘못되었는지 모른다. 내 도메인을 "허용"하려면 어떻게해야합니까 (허용 목록에 있음)

그리고 또 다른 질문입니다. 나는 전에이 질문에 대한 답을 검색하지 않았습니다.

Localhost에서 코드를 사용할 수 있다고 생각합니다. 내 localhost 주소 또는 이와 비슷한 것을 허용해야한다고 생각합니다. 그러나 화이트리스트는 작동하지 않습니다.

  • 드림 게이머

2
여전히 같은 문제에 직면 해 있습니다. 문제를 해결할 다른 해결책이 있습니까?
Yashu Mittal

제 경우에는 사용 http하면 문제가 발생합니다. 전환하면 https문제가 해결됩니다.
Xiao

1
이미 인증 된 도메인에 도메인을 추가 한 사람들은 사이트의 캐시를 지우면 모든 데이터가 진정으로 설정되면 확실히 작동합니다.
Haritsinh Gohil

답변:


76

같은 문제가 있었고 해결 방법은 다음과 같습니다.

  1. 프로젝트에서 Analytics 및 Google Plus API 활성화
  2. 새 OAUTH 2.0 클라이언트 자격 증명 만들기
    • 추가 공인 자바 스크립트 기원을 아래에 제한 섹션
  3. 새 클라이언트 ID를 사용하십시오.

즐겨.


OMG 감사합니다! 그것은 나를 위해 일하고 있습니다. 내 문제 중 하나는 클라이언트 ID가 아닌 클라이언트 키를 사용했다는 것입니다.
DreamGamer

4
이미 다른 포트에 대한 oAuth를 생성했다면이를 명확히해야합니다. 어떤 이유로 다른 포트를 사용하도록 포트를 다시 편집 할 수 없습니다. 기본적으로 새 포트에 대한 "다른 자격 증명을 만들었습니다". 분명히 이것은 또 다른 토큰을 만들 것입니다. 그러니 그냥 잡고 대신 사용하십시오. 콘솔에서 두 토큰을 모두 유지할 수 있습니다.
Sam3k

감사! 직관적이지 않지만 정답입니다. 기존 키에 필요한 API (명백하지 않음)를 추가 할 수 없다는 사실은 매우 미쳤습니다. 키에 대한 전체 구성을 다시 만드는 것은 어렵습니다.
beachCode

Googe Plus API를 활성화하라는 말입니다. 그러나 Youtube API와 Google Plus API의 관계는 무엇입니까?
Yashu Mittal

나는 여기서 상관 관계를 정말로 이해하지 못하지만 그것은 나에게 (그리고 분명히 다른 사람들에게) 효과가 있었던 유일한 것입니다.
Ezra Obiwale

201

캐시를 지 웠습니다. 그때 일을 시작했습니다.

Chrome : 설정-> 고급-> 인터넷 사용 기록 삭제-> 캐시 된 이미지 및 파일


1
감사합니다. 모든 일을 제대로했고 문제가 생겼습니다.
cura

2
이것은 내 웹 응용 프로그램에 Google 로그인을 사용하는 동안 저에게 효과적이었습니다. 감사!
Sahil Lakhwani

1
+1 ... 나는 이미 몇 달 전에 나에게 일어 났을 때 한 번 당신을 upvoted,하지만 당신은 다른 자격
howMuchCheeseIsTooMuchCheese

1
이 대답은 도움이되지 않았습니다.
tishma

2
많은 요청이 진행되고 있습니다. 그중 하나가 브라우저에 의해 캐시되고 있으므로 API 콘솔에서 변경 한 사항에 대해 알지 못합니다. 그러나 Browser DevTools가 열려있는 동안 캐시를 완전히 비활성화하는 것이 더 쉽다고 생각합니다. 대부분의 경우 "네트워크"탭에 옵션 (확인란)이 있습니다. 활성화 한 후에는 페이지 새로 고침으로 충분합니다.
Andreas Linnert

16

캐시를 지우는 것이 나를 위해 트릭을했습니다.


3
일단 이렇게하면 upvote를 위해 stackoverflow에 다시 로그인하는 것을 잊지 마십시오
Anand Rockzz

8

캐시 지우기를 시도하면 캐시 / 로컬 저장소에 문제가있을 수 있습니다.


7

저에게는 Google 애널리틱스와 같은 추가 API를 추가하지 않고도 작동했습니다. 전체 클라이언트 ID를 추가하고 시크릿 창에서 앱을 열어 캐시 저장을 방지하세요. 이미 일반 창에서 앱을 연 경우 1- 앱이 열려있는 모든 탭을 닫습니다. 2- 캐시와 쿠키를 지 웁니다. 크롬에서 설정-> 비밀번호 및 양식-> 인터넷 사용 기록 삭제-> 고급 (탭)-> a) 쿠키 및 기타 사이트 데이터를 선택하고 b) 캐시 된 이미지 및 파일 3-새 시크릿 창을 열고 테스트 앱.


2
모든 태그를 닫을 필요는 없습니다. 시크릿 창을 여는 것으로 충분합니다.
Bert Verhees

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대신 clientIdgapi.client.init(링크 API 문서 과 같이) :

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 에서 샘플 작업을 시도했습니다.

WebAPI에 IP 주소가 추가 되었음에도 불구하고 계속 실패했습니다.

그러나 여기에 표시된대로 OAUTH에 localhost : 8000 (127.0.0.1:8000뿐만 아니라)을 추가해야합니다.

OAUTH 클라이언트

OAUTH 클라이언트 텍스트 위에 플로팅하면 링크가됩니다. 해당 링크를 클릭하면 포트를 포함하는 URI를 추가 할 수 있습니다. 광산에는 이미 127.0.0.1:8000이 있지만 locahost : 8000은 없습니다.

locahost : 8000

여기에 흥미롭고 이상한 점이 있습니다. localhost를 핑하면 다음이 표시됩니다.

IPV6

나는 그것이 IPV6 일이라고 생각합니다.

어쨌든 127.0.0.1을 핑하면 예상되는 응답이 표시됩니다 (IPV4를 통해).

IPV4

붉은 청어일지도 모르지만 OAUTH에 입력 한 값이 영향을 받는지 확실하지 않습니다.

내가 알아 차린 이유는 튜토리얼의 지시에 따라 Python 웹 서버를 시작했을 때 다음을 보았고 이상하다고 생각했기 때문입니다. 파이썬 IP 주소

OAUTH에 localhost : 8000 URI를 추가 한 후에 만 ​​작동했지만 추가 한 후에는 제대로 작동했습니다.


2

여기에 많은 사람들이 지적했듯이 이것은 브라우저 캐싱 문제 일뿐입니다. 새 키를 만들거나 캐시를 지울 필요가 없습니다. 새 브라우저 시크릿 (익명) 창에서 다시 시도하면 정상적으로 작동합니다.


1

내 웹 앱에 대한 로그인을 얻으려고 비슷한 문제가 발생했습니다. 내가 한 일은 Cloud Platform에서 OAuth 클라이언트 ID 사용자 인증 정보를 다시 만드는 것입니다. 이 작업을 수행하고 새 클라이언트 ID를 사용했을 때 모든 것이 잘 작동했습니다. 이전에 문제가 무엇인지 확실하지 않지만 지금은 완벽하게 진행됩니다.

누군가 Google 또는 기타에서 이것을 발견하면 시도하십시오. 그냥 작동 할 수도 있습니다. Ezra Obiwale의 대답은 본질적으로 몇 개의 API를 추가 한 직후 새 클라이언트 ID를 생성하기 때문에 설명 할 것입니다.

왜 이런 일이 발생하는지에 대한 설명을 아는 사람이 있다면 감사하겠습니다.


0

나는 이와 똑같은 문제를 겪고있었습니다. 해결책은 API Manager로 이동하여 Analytics API를 활성화하는 것이 었습니다. 문제가 무엇인지 확실하지 않지만 이로 인해 해결 된 것 같습니다!


1
Analytics API를 활성화했지만 변경된 사항이 없습니다. : C
DreamGamer 2017 년

0

나는 이것이 캐싱과 관련이 있다고 생각하고 브라우저로 이동하여 캐시를 지우고 시도하십시오 : 크롬에서> 설정> 고급> 검색 데이터 지우기 :> : 캐시 된 이미지 및 파일.


0

작동하지 않는 이유 중 하나는 특정에서 로그인 횟수 (100)를 초과했기 때문 client ID입니다.

Google API 콘솔 페이지를 방문 하여 새 Oauth2 클라이언트 자격 증명을 Authorized Javascript Origins만든 다음 ( 아래에 애플리케이션 URL을 추가해야 함 ) 사용할 수 있습니다.


0

client_ID를 복사했을 때 파일에 공백이 있다는 것을 깨달을 때까지 동일한 문제가 발생하여 문자열에서 공백을 제거하고 모든 것이 잘 작동합니다.


0

내 로컬 호스트에서 react-social-login을 사용하여 Google 로그인으로 작업하는 동안 동일한 문제에 직면했습니다. 화이트리스트 오리진에서는 http : // localhost : 3000 을 제공 해야 작동합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.