使用Android上的YouTube数据API创建播放列表



我正在尝试使用youtube gdata api,以在youtube帐户中添加新的播放列表。我将代码基于文档:https://developers.google.com/youtube/2.0/developers_guide_protocol_playlists#adding_a_playlist

我首先获得访问令牌,并适当使用我的开发人员密钥。该帖子似乎正常工作,但是当试图取回响应时,我在调用getInputStream时找不到文件。

有人有想法吗?谢谢

这是连接代码(更新的清洁器版本):

@Override
protected Boolean doInBackground(Void... arg0) {
    BufferedReader input = null;
    InputStreamReader inputStreamReader = null;
    StringBuilder postContentXml = new StringBuilder();
    postContentXml.append("<?xml version='1.0' encoding='UTF-8'?>").
        append("<entry xmlns='http://www.w3.org/2005/Atom'") .
        append(" xmlns:yt='http://gdata.youtube.com/schemas/2007'>").
        append("<title type='text'>Sports Highlights Playlist</title>").
        append("<summary>A selection of sports highlights</summary>").
        append("</entry>");
    byte[] buffer = postContentXml.toString().getBytes();
    StringBuilder response = new StringBuilder();
    try {
        URL url = new URL("https://gdata.youtube.com/feeds/api/users/default/playlists");
        HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
        // Initialize connection parameters
        urlConnection.setConnectTimeout(30000);
        urlConnection.setReadTimeout(30000);
        urlConnection.setDoOutput(true);
        urlConnection.setRequestMethod("POST");
        // Headers initialization
        urlConnection.setRequestProperty("Content-Type", "application/atom+xml");
        urlConnection.setRequestProperty("Content-Length", String.valueOf(buffer.length));
        urlConnection.setRequestProperty("Authorization", mAuthToken);
        urlConnection.setRequestProperty("GData-Version", "2");
        urlConnection.setRequestProperty("X-GData-Key", YoutubeUtils.getDevKey());
        OutputStream os = urlConnection.getOutputStream();
        os.write(buffer, 0, buffer.length);
        os.flush();
        os.close();
        InputStream inputStream = urlConnection.getInputStream();
        inputStreamReader = new InputStreamReader(inputStream, "UTF-8");

        input = new BufferedReader(inputStreamReader, 4096);
        String strLine = null;
        while ((strLine = input.readLine()) != null) {
            response.append(strLine);
        }
        input.close();
        inputStreamReader.close();
        inputStream.close();
        urlConnection.disconnect();
        Log.d("CreatePlaylistTask", "Response: " + response);
    }
    catch(Exception e) {
        Log.d("CreatePlaylistTask", "Error occured: " + e.getMessage());
    }
    return true;
}

我假设帖子实际上并不成功。

如果我不得不从查看您的代码中猜测,我认为问题可能是Authorization标头值。myAuthToken是什么样的,是什么类型的令牌?例如,如果是OAuth 2令牌,则值需要为Bearer TOKEN_VALUE,而不仅仅是TOKEN_VALUE

另外,请注意,YouTube数据API的V3将在不久的将来发布,它将使用新的Google APIS客户端库在Android上提供更好的支持。

我已经整理了一个示例Android应用程序,该应用程序使用YouTube数据v3 api来演示如何将播放列表加载到ListView中。

https://github.com/akoscz/youtubeplaylist

请注意,您必须具有此示例应用程序工作的有效API键。您可以在Google Developer Console注册您的应用程序,并启用YouTube数据API。您需要注册Web应用程序而不是Android应用程序,因为该示例应用程序使用的API键是"浏览器密钥"。

相关内容

  • 没有找到相关文章

最新更新