如何使用YouTube数据API将YouTube视频添加到观看历史记录



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

有人知道如何将视频添加到观看历史记录中,以便在API调用中返回吗?或者,有没有一种方法可以使用播放器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);

您可以使用此代码使用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);
    }

相关内容

  • 没有找到相关文章

最新更新