社交媒体三方平台
Youtube
接入前准备流程
- 申请Google账号,访问谷歌云平台
- 在导航栏中找到
API和服务,进入已启用的API和服务,搜索YouTube Data API v3

- 进入
YouTube Data API v3,点击启用

- 进入
YouTube Data API v3API/服务详情,点击创建凭据

- 勾选用户数据,点击下一步,填写每一个步骤的信息,在第五步下载凭证,最后点击完成

注意,在范围中选择YouTube Data API v3的部分,按需选择

- 下载凭证后,将凭证放入项目的
config文件夹中,并重命名为client_secret.json
接入工作
- 导入YouTube API依赖
1
2
3
4
5
6
7
8
9
10
11
| <!--Youtube-->
<dependency>
<groupId>com.google.apis</groupId>
<artifactId>google-api-services-youtube</artifactId>
<version>v3-rev20230123-2.0.0</version>
</dependency>
<dependency>
<groupId>com.google.api-client</groupId>
<artifactId>google-api-client-gson</artifactId>
<version>2.2.0</version>
</dependency>
|
- 参考YouTube API官方文档,编写代码
- 创建授权凭据(准备工作中的client_secret.json文件)
- 确定访问权限范围

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| List<NameValuePair> parameters = new ArrayList<>();
parameters.add(new BasicNameValuePair("code", code));
parameters.add(new BasicNameValuePair("client_id", clientSecrets.getWeb().getClientId()));
parameters.add(new BasicNameValuePair("client_secret", clientSecrets.getWeb().getClientSecret()));
parameters.add(new BasicNameValuePair("grant_type", "authorization_code"));
parameters.add(new BasicNameValuePair("redirect_uri",redirectUri));
UrlEncodedFormEntity encodedFormEntity = new UrlEncodedFormEntity(parameters, StandardCharsets.UTF_8.name());
String url = "https://oauth2.googleapis.com/token";
HttpPost request = new HttpPost();
request.setEntity(encodedFormEntity);
String response = HttpClientUtil.doPost(url, encodedFormEntity);
System.out.println(response);
TokenResponse tokenResponse = JSON.parseObject(response,TokenResponse.class);
Credential credential = flow.createAndStoreCredential(tokenResponse, state);
CREDENTIAL_MAP.put(state,credential);
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
| /**
* 上传视频接口
* @return
*/
Credential credential = YoutubeAuthController.CREDENTIAL_MAP.get(uid);
YouTube youtubeService = new YouTube.Builder(httpTransport, jsonFactory, credential).build();
Video uploadedVideo = new Video();
VideoStatus status = new VideoStatus();
status.setPrivacyStatus("public");
uploadedVideo.setStatus(status);
VideoSnippet snippet = new VideoSnippet();
snippet.setTitle(file.getOriginalFilename());
uploadedVideo.setSnippet(snippet);
InputStreamContent mediaContent =new InputStreamContent("application/octet-stream",new BufferedInputStream(file.getInputStream()));
YouTube.Videos.Insert videoInsert = youtubeService.videos().insert("snippet,status,id,player", uploadedVideo, mediaContent);
MediaHttpUploader uploader = videoInsert.getMediaHttpUploader();
uploader.setDirectUploadEnabled(false);
MediaHttpUploaderProgressListener progressListener = e -> {
switch (e.getUploadState()) {
case INITIATION_STARTED:
System.out.println("Initiation Started");
break;
case INITIATION_COMPLETE:
System.out.println("Initiation Completed");
break;
case MEDIA_IN_PROGRESS:
System.out.println("Upload in progress");
System.out.println("Upload percentage: " + e.getProgress());
break;
case MEDIA_COMPLETE:
System.out.println("Upload Completed!");
break;
case NOT_STARTED:
System.out.println("Upload Not Started!");
break;
}
};
uploader.setProgressListener(progressListener);
videoInsert.execute();
|