【问题标题】:How can I add a YouTube video to the Watch History with the YouTube Data API?如何使用 YouTube 数据 API 将 YouTube 视频添加到观看历史记录?
【发布时间】:2013-09-04 04:00:25
【问题描述】:

我正在使用 YouTube Data API 3.0 创建一个网站,用户可以在其中观看 YouTube 视频。我需要将这些视频转到观看历史记录,这样我才能知道它们已被观看,但使用 YouTube Player API 播放视频不会添加它们。我已使用 playlistItems.insert 将视频 ID 添加到用户的观看历史播放列表 ID,如果我访问 youtube.com,视频会显示在观看历史播放列表中。但是,当我使用 Data API 请求播放列表项时,它不会在列表中返回。

有人知道如何将视频添加到观看历史记录中,以便在 API 调用中返回它们吗?或者,有没有办法使用 Player API,以便经过身份验证的用户在其观看历史记录中获取视频?

以下是将视频添加到用户观看历史记录的代码:

gapi.client.youtube.playlistItems.insert({
  'part': 'snippet',
  'resource': {
    'snippet': {
      'playlistId': Cache.fetch('my_channel').relatedPlaylists.watchHistory,
      'position': 0,
      'resourceId': {
        'kind': 'youtube#video',
        'videoId': video_id,
      }
    }
  }
}).execute(callback);

【问题讨论】:

  • 您能分享一下您的 playlistItems.insert 调用的代码吗?

标签: youtube-api


【解决方案1】:

您可以使用此代码使用 http 和 json 进行连接和请求

try {

        URL url = new URL("https://www.googleapis.com/youtube/v3/playlistItems?part=snippet"
                + "&key=AIzaSyAhONZJpMCBqCfQjFUj21cR2klf6JWbVSo"
                + "&access_token=" + access_token);
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setDoOutput(true);
        conn.setRequestMethod("POST");
        conn.setRequestProperty("Content-Type", "application/json");

        String input = "{ \"snippet\": {\"playlistId\": \"WL\",\"resourceId\": {\"videoId\": \""+videoId+"\",\"kind\": \"youtube#video\"},\"position\": 0}}";

        OutputStream os = conn.getOutputStream();
        os.write(input.getBytes());
        os.flush();

        if (conn.getResponseCode() != HttpURLConnection.HTTP_CREATED) {
            throw new RuntimeException("Failed : HTTP error code : "
                + conn.getResponseCode());
        }

        BufferedReader br = new BufferedReader(new InputStreamReader(
                (conn.getInputStream())));

        String output;
        System.out.println("Output from Server .... \n");
        while ((output = br.readLine()) != null) {
            System.out.println(output);
        }

        conn.disconnect();

      } catch (MalformedURLException e) {

        e.printStackTrace();

      } catch (IOException e) {

        e.printStackTrace();

     }

如果你看到错误添加这个,但这不是一个好工作。

if (Build.VERSION.SDK_INT >= 9) {
        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
        StrictMode.setThreadPolicy(policy);
    }

【讨论】:

  • 这不起作用。观看记录禁止插入操作。
猜你喜欢
  • 2015-08-31
  • 2022-08-05
  • 1970-01-01
  • 2023-03-17
  • 2015-07-28
  • 2011-03-20
  • 2011-04-08
  • 1970-01-01
  • 2017-10-31
相关资源
最近更新 更多