2016-06-08 3 views
2

내 채널 앱에서 YouTube 데이터 API v3에 액세스하여 특정 채널에서 일부 동영상을 가져 오려고합니다. API 키를 만들고 패키지 이름과 SHA-1 지문을 삽입했습니다. 그러나 작동하지 않습니다.YouTube Data API v3 인증 오류

이 오류입니다 :

com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 Forbidden 
{ 
    "code" : 403, 
    "errors" : [ { 
     "domain" : "usageLimits", 
     "message" : "The Android package name and signing-certificate fingerprint, null and null, do not match the app restrictions configured on your API key. Please use the API Console to update your key restrictions.", 
"reason" : "ipRefererBlocked", 
"extendedHelp" : "https://console.developers.google.com/apis/credentials?project=1097633804344" 
    } ], 
     "message" : "The Android package name and signing-certificate fingerprint, null and null, do not match the app restrictions configured on your API key. Please use the API Console to update your key restrictions." 
} 
at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:113) 
at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:40) 
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest$1.interceptResponse(AbstractGoogleClientRequest.java:321) 
at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:1065) 
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:419) 
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:352) 
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:469) 
at de.axelrindle.youtubeapitest.YoutubeConnector.fetchVideoIDS(YoutubeConnector.java:59) 
at de.axelrindle.youtubeapitest.util.VideoIDFetcher.fetchVideoIDS(VideoIDFetcher.java:62) 
at de.axelrindle.youtubeapitest.InitService.onHandleIntent(InitService.java:57) 
at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:66) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:148) 
at android.os.HandlerThread.run(HandlerThread.java:61) 

그리고 여기에 요청을 전송하는 코드입니다 :

YoutubeConnector.class 

public YoutubeConnector(Context context) { 
    this.context = context; 
    youTube = new YouTube.Builder(new NetHttpTransport(), new JacksonFactory(), new HttpRequestInitializer() { 
     @Override 
     public void initialize(HttpRequest request) throws IOException {} 
    }).setApplicationName("YouTube Data API v3 Test").build(); 

    try { 
     query = youTube.search().list("id,snippet"); 
     query.setKey(DevKey.YOUTUBE_API); 
     query.setType("video"); 
     query.setFields("items(id/videoId,snippet/title,snippet/description,snippet/thumbnails/default/url)"); 
     query.setChannelId("UC3ifTl5zKiCAhHIBQYcaTeg"); 
     query.setMaxResults(maxResults); 
    } catch (IOException e) { 
     Log.e("YoutubeConnector", "Failed to connect to YouTube: " + e.getMessage()); 
    } 
} 

public List<String> fetchVideoIDS() { 

    List<String> ids = new ArrayList<>(); 
    maxResults += 10; 

    try { 
     SearchListResponse response = query.execute(); 
     List<SearchResult> results = response.getItems(); 

     for (SearchResult result : results) { 
      ids.add(result.getId().getVideoId()); 
     } 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

    return ids; 
} 

어떤 도움을 많이 감사입니다!

+0

실행중인 키 저장소 파일 (빌드 apk)과 동일한 파일 SHA1이 API 키를 작성하는 데 사용되는지 확인하십시오. – Bharatesh

+0

@skadoosh 서명하고 API 키를 생성하기 위해 하나의 동일한 키 저장소를 사용했습니다. – Axel

+0

나는 쿼리 변수가 선언 된 방법을 한 번만 질문 해주십시오. ?? – rainman

답변

1

혼자서 고쳐졌습니다.

잘못된 API 키를 사용하고있었습니다.

편집 :

어쩌면 내가이 브라우저 API 키 대신 키 안드로이드 API를 사용할 때이 일을 언급해야한다.