如何使用Android中的youtube数据API搜索视频

jos*_*svm 8 youtube android youtube-api android-youtube-api

我正在Android中开发一个应用程序,需要通过关键字搜索YouTube的视频.我使用了Youtube数据API,代码如下:

    try {
        youtube = new YouTube.Builder(Auth.HTTP_TRANSPORT, Auth.JSON_FACTORY, new HttpRequestInitializer() {
            public void initialize(HttpRequest request) throws IOException {
            }
        }).setApplicationName("YoutubeQoE").build();

        // Define the API request for retrieving search results.
        YouTube.Search.List search = youtube.search().list("id,snippet");

        // Set your developer key from the Google Cloud Console for
        // non-authenticated requests. See:
        // https://cloud.google.com/console
        search.setKey(DeveloperKey.DEVELOPER_KEY);
        search.setQ("dogs");

        // Restrict the search results to only include videos. See:
        // https://developers.google.com/youtube/v3/docs/search/list#type
        search.setType("video");

        // To increase efficiency, only retrieve the fields that the
        // application uses.
        //search.setFields("items(id/kind,id/videoId,snippet/title,snippet/thumbnails/default/url)");
        search.setMaxResults(25);

        SearchListResponse searchResponse = search.execute();
        List<SearchResult> lista = searchResponse.getItems();

    } catch (GoogleJsonResponseException e) {
        System.err.println("There was a service error: " + e.getDetails().getCode() + " : "
                + e.getDetails().getMessage());
    } catch (IOException e) {
        System.err.println("There was an IO error: " + e.getCause() + " : " + e.getMessage());
    } catch (Throwable t) {
        t.printStackTrace();
    }
Run Code Online (Sandbox Code Playgroud)

对于de DEVELOPER_KEY,我在google开发者控制台上使用了公共API访问.

但是当我执行程序时,行中存在问题:

SearchListResponse searchResponse = search.execute();

在android manifest.xml中我有这些权限:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
Run Code Online (Sandbox Code Playgroud)

如果有人能帮助我,我将非常感激

Ayu*_*yal 12

实现这一目标的另一种方法是从中获得结果:

https://www.googleapis.com/youtube/v3/search?part=snippet&q=eminem&type=video&key=<key>
Run Code Online (Sandbox Code Playgroud)

您可以使用参数来获得实际需要的内容.您还需要https://console.developers.google.com/上的API密钥.


Ibr*_*aya 2

您可以将您的项目与Android 版 YouTube Direct Lite进行比较。是的,设置 API 密钥而不是 OAuth2 就足够了。