1

特定のビデオに関するデータを取得しようとしている単純なテスト Android アプリを作成しています。デバッグ キーストアの SHA1 フィンガープリントを取得し、それを使用して Google API キー (およびパッケージ名) を作成しました。YouTube API サービスを有効にしました。

これは私のコードです:

YouTube youtube = new YouTube.Builder(new NetHttpTransport(), new GsonFactory(), new HttpRequestInitializer() {
    public void initialize(HttpRequest request) throws IOException {}
}).setApplicationName("MyApp").build();

try {
    YouTube.Videos.List listVideosRequest = youtube.videos().list("snippet,contentDetails");
    listVideosRequest.setId("A3PDXmYoF5U");
    listVideosRequest.setKey(GoogleAPIKey.DEBUG_GOOGLE_API_KEY);
    VideoListResponse youtubeResponse = listVideosRequest.execute();

    List<Video> youtubeVideos = youtubeResponse.getItems();

    return youtubeVideos;

} catch (IOException e) {
    Log.e("MyApp", e.getLocalizedMessage());
    return null;
}

そのため、常に例外が発生します: 403、アクセスが構成されていません。

アイデアが不足しています。何が間違っている可能性があります。APIキーを使用して、Android用のYouTube APIを正常に使用した人はいますか?

アップデート:

Googleに送信される実際のリクエストがどのように見えるかを見つけるために、Googleライブラリを深くデバッグしました。これです:

https://www.googleapis.com/youtube/v3/videos?id=A3PDXmYoF5U&key=[my-debug-google-api-key]&part=snippet,contentDetails

これらのヘッダーを設定すると:

Accept-Encoding: gzip
User-Agent: MyApp Google-HTTP-Java-Client/1.15.0-rc (gzip)

そこには何も問題はありません。

4

1 に答える 1

0

わかりました、たくさん読んだ後、このGoogleドキュメントを見つけました:

すべての挿入、更新、および削除要求に対して認証トークンを送信する必要があります。また、認証されたユーザーのプライベート データを取得するすべての要求に対して、承認トークンを送信する必要があります。

さらに、リソースを取得するための一部の API メソッドは、承認が必要なパラメーターをサポートする場合や、リクエストが承認されたときに追加のメタデータを含む場合があります。たとえば、ユーザーがアップロードした動画を取得するためのリクエストには、その特定のユーザーによってリクエストが承認されている場合、非公開の動画が含まれる場合もあります。

したがって、結論は簡単です。ビデオも非公開である可能性がある一方で、非公開データの読み取りにのみ API キーを使用する必要があります。私の場合、Channels匿名でロードしようとしましたが、リクエストしたときにのみ機能しchannel_idます。contentDetails (アップロードへのリンクを含む) を要求したときに、403 エラーも発生しました。

于 2013-09-09T13:08:05.997 に答える