답변

10

가 나는

https://www.googleapis.com/youtube/v3/videos?id=itemId&key=apiKey&fields=items(snippet(title))&part=snippet 

와 구문 그래서, 많은 잘못하지

alert(data.items[0].snippet.title); 

를 사용하여 작업있어! 하지만 문제가 실제로 Google API의 '허용 된 리퍼러'를 설정할 때 백엔드에 있다는 것을 알았습니다. V3 API를 사용하면 API가 속해야하는 리퍼러를 선택할 수 있으므로 다른 사용자가 API를 훔쳐서 사용할 수 없습니다. 따라서 요청한 도메인 이름/IP를 기반으로 요청을 보낸 경우 API가 작동합니다. 제한을주지 않으면 코드가 작동하지만 내 도메인에 들어가면 실패합니다! 나는 .mydomainname.com/을 입력했는데 제안 된 것과 같은 형식이지만 어떻게 든 오류가납니다. 이제는 왜 그 이유를 알아 냈습니다.

+0

https://developers.google.com/youtube/v3/docs/videos/list – Lane

+0

이런 식으로 일을하는 것이 좋지 않겠습니까? 누구든지 볼 수있는 자바 스크립트에 apiKey를 노출해야하므로? –

+1

제 생각에 도메인을 Google의 설정 페이지에서 API 키와 연결할 수 있습니다. 그런 식으로 유튜브는 API 호출의 출처를 알기 때문에 다른 사람들이 단순히 API 키를 사용할 수 없습니다. 문제가 발생하여 문제가 발생하여 질문이 열리게되었습니다. 거기에 의견이 있지만 아직 시도하지 않았습니다. http://stackoverflow.com/questions/28032237/youtube-api-v3-referer-not-working-in-javascript?noredirect=1#comment44452710_28032237 –

3

 q = 'https://www.googleapis.com/youtube/v3/videos?id='+ itemId +'&key='+ ytApiKey +'&fields=items(snippet(channelId,title,categoryId))&part=snippet' ; 

$.ajax({ 
     url: q, 
     dataType: "jsonp", 
     success: function(data){ 
       alert(data.items[0].title); 
       console.log(data.snippet.title);    
     }, 
     error: function(jqXHR, textStatus, errorThrown) { 
      alert (textStatus, + ' | ' + errorThrown); 
     } 
    }); 

감사합니다.

$.ajax({ 
     url: "https://www.googleapis.com/youtube/v3/videos?id=" + videoId + "&key="+ apiKey + "&fields=items(snippet(title))&part=snippet", 
     dataType: "jsonp", 
     success: function(data){ 
       console.log(data.items[0].snippet.title);   
     }, 
     error: function(jqXHR, textStatus, errorThrown) { 
      alert (textStatus, + ' | ' + errorThrown); 
     } 
    }); 
+3

이런 식으로 일을하는 것이 좋지 않습니까? 누구든지 볼 수있는 자바 스크립트에 apiKey를 노출해야하므로? –

관련 문제