有两种方法可以做到这一点:
当您进行播放列表管理或视频上传等 API 调用时,如果没有链接频道,API 将抛出 GoogleJsonResponseException。下面的代码片段向您展示了当您尝试进行播放列表更新 API 调用并且没有频道时会发生什么:
try {
yt.playlistItems().insert("snippet,contentDetails", playlistItem).execute();
} catch (GoogleJsonResponseException e) {
GoogleJsonError error = e.getDetails();
for(GoogleJsonError.ErrorInfo errorInfo : error.getErrors()) {
if(errorInfo.getReason().equals("youtubeSignupRequired")) {
// Ask the user to create a channel and link their profile
}
}
}
当您收到“youtubeSignupRequired”作为错误原因时,您会想要做一些事情。
另一种方法是提前检查。进行 Channel.List 调用并检查“项目/状态”。您正在寻找布尔值“isLinked”等于“真”。请注意,我在此示例代码中插入了一个强制转换,因为在此示例的版本中,客户端返回的是字符串值而不是类型化的布尔值:
YouTube.Channels.List channelRequest = youtube.channels().list("status");
channelRequest.setMine("true");
channelRequest.setFields("items/status");
ChannelListResponse channelResult = channelRequest.execute();
List<Channel> channelsList = channelResult.getItems();
for (Channel channel : channelsList) {
Map<String, Object> status = (Map<String, Object>) channel.get("status");
if (true == (Boolean) status.get("isLinked")) {
// Channel is linked to a Google Account
} else {
// Channel is NOT linked to a Google Account
}
}