6

나는Youtube 동영상 목록을 업로드하십시오. FileNotFound 오류

https://www.googleapis.com/youtube/v3/search?part=snippet&channelId {MY_CHANNEL_ID} &에서 maxResults = 50 & 키 = {MY_APP_ID} 내가 구글 앱 콘솔과에서 앱을 만든

다음 사용하여 내 YouTube 채널에 업로드 된 동영상의 목록을 얻기 위해 노력하고 있어요 APP ID를 생성합니다. 하지만 내 안드로이드 응용 프로그램을 통해 내 안드로이드 응용 프로그램을 통해 액세스하려고하면 오류

나는 또한 다른 제약없이 웹 브라우저 키를 통해 액세스하려고하면 응용 프로그램 식별자 및 SHA1을 부여했습니다 그것은 잘 작동하고 모두 반환합니다 동영상 목록은 안드로이드의 경우에는 작동하지 않습니다.

@Override 
    protected String doInBackground(Void... voids) { 

     HttpURLConnection urlConnection = null; 

     String urlString = "https://www.googleapis.com/youtube/v3/search?part=snippet&channelId=UCrF362wkcVnjqqPRsSEzvgg&maxResults=50&key=AIzaSyAiAFjZb1eVdRxVWnymrhuAb1iDlmYupu8"; 
     //urlString = "https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&playlistId=PLTqSMwQKOhUhl7gm7h6YwX6XPYr0ViBtu&key=AIzaSyAiAFjZb1eVdRxVWnymrhuAb1iDlmYupu8"; 

     String jsonString = new String(); 

     URL url = null; 
     try { 
      url = new URL(urlString); 

     urlConnection = (HttpURLConnection) url.openConnection(); 

     urlConnection.setRequestMethod("GET"); 
     urlConnection.setReadTimeout(10000 /* milliseconds */); 
     urlConnection.setConnectTimeout(15000 /* milliseconds */); 

     urlConnection.setDoOutput(true); 

     urlConnection.connect(); 

     BufferedReader br=new BufferedReader(new InputStreamReader(url.openStream())); 

     char[] buffer = new char[1024]; 

     StringBuilder sb = new StringBuilder(); 
     String line; 
     while ((line = br.readLine()) != null) { 
      sb.append(line+"\n"); 
     } 
     br.close(); 

     jsonString = sb.toString(); 

     System.out.println("JSON: " + jsonString); 

     } catch (MalformedURLException e) { 
      e.printStackTrace(); 
     } catch (ProtocolException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

     return jsonString; 
    } 

오류 로그

BasicNetwork.performRequest: Unexpected response code 403 for https://www.googleapis.com/youtube/v3/search?part=snippet&channelId=UCrF362wkcVnjqqPRsSEzvgg&maxResults=50&key=AIzaSyAiAFjZb1eVdRxVWnymrhuAb1iDlmYupu8 
05-13 15:28:26.607 19118-19151/com.jeevanmulmantra W/System.err: java.io.FileNotFoundException: https://www.googleapis.com/youtube/v3/search?part=snippet&channelId=UCrF362wkcVnjqqPRsSEzvgg&maxResults=50&key=AIzaSyAiAFjZb1eVdRxVWnymrhuAb1iDlmYupu8 

enter image description here

+0

코드를 게시하십시오. –

+0

귀하의 요청이 불완전한 것으로 보입니다. 따라서 API는 403을 반환합니다. 수정 해보십시오 – nandsito

+0

@nandsito 어떤 아이디어가 빠졌습니까 ?? – Krishnakant

답변

3

당신의 API 콘솔 설정을 보지 않고, 내가 확실히 말할 수 없습니다. 하지만 HTTP 응답을 보면 IP 주소가 Google 인증 서버에 의해 차단 된 것 같습니다. 따라서, 그것은 당신의 API Console에 무단 요청 HTTP 상태 코드 (403)

이동을 다시 전송하고 키 제한 섹션에서 없음 라디오 버튼을 선택합니다. 그런 다음 다시 시도하십시오. 그것은 작동해야합니다.

+0

예, 없슴 키 제한 사항은 위에서 언급 한대로 잘 작동하지만 패키지 이름과 SHA1을 사용하여 안드로이드에 대한 키 제한을 추가하려고 할 때 작동하지 않습니다. 콘솔 스크린 샷도 확인하십시오 – Krishnakant

+0

어떤 아이디어가 있습니까? – Krishnakant

0

이것은 정확히 사용자가 묻는 것은 아니지만 내 경험을 공유 할 것입니다.

몇 달 전에 비슷한 상황이있었습니다. 선상에 서서 나는 안드로이드에 대한 YouTube API 옵션이 작동하지 않는다는 결론을 얻었다. 내 개발에 더 편리한 솔루션을 제공하게되었습니다.

웹 사이트 용 YT API를 가져 와서 해당 도메인에 바인딩했습니다.

I curl 및 cron 작업 설정을 사용하여 하루에 두 번 YouTube에서 재생 목록을 가져 오는 PHP 파일을 만들었습니다. 그런 다음 json 형식의 재생 목록 파일이 웹 서버에 기록됩니다 (하루에 두 번 새로 고침).

Android 앱이 YT와 내 서버에 연결되어 거기에서 '캐싱 된'json 재생 목록을 가져옵니다.

이 옵션은 재생 목록에 대한 모든 히트작이 웹 사이트로 이동하기 때문에 할당량 사용에 대한 영향을 크게 줄입니다.

이 옵션에 관심이 있으시면 재생 목록을 가져 오는 데 사용 된 PHP를 공유 할 수 있습니다.

+0

이것은 정말 좋은 작업입니다.이 문제에 대한 해결책을 찾지 못하면이 방법을 따르기를 원할 것입니다. 귀하의 의견을 – Krishnakant