有兩種方法可以做到這一點:
當您的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」等於「true」。請注意,我插在此示例代碼鑄因爲在這個樣本的版本,客戶端是返回一個字符串值,而不是一個類型的布爾:
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
}
}
非常感謝Ikai! – Apples
NP亞倫。如果這是最好的答案,那麼如果您將此問題設置爲已回答,那麼它會非常有幫助,因此當我正在尋找幫助人員時,它不會在我的提要中彈出。 –
我也想要,但它還沒有爲我工作。當通過Java嘗試並且通過api資源管理器嘗試時,我沒有返回任何通道,狀態永遠不會被填充。 – Apples