2013-07-02 76 views
1

無論用戶是否創建頻道,YouTube都會爲該特定用戶返回一個頻道。如何檢查YouTube頻道是否有效

的Java API

YouTube.Channels.List search = youTube.get().channels().list("id); 
search.setPart("id"); 
ChannelListResponse res = search.execute(); 
List<Channel> searchResultList = search.getItems() 
Channel channel = searchResultList.get(0); // there is always a channel 

對於身份驗證的用戶,渠道似乎存在,但要到YouTube個人資料時,它指出:「你必須創建一個頻道來上傳視頻。創建頻道」,或者如果要到用戶沒有通過身份驗證的網址,它會說「此頻道目前不可用,請稍後再試。」

如何檢查YouTube頻道是否有效。我必須嘗試上傳到它嗎?

回答

5

有兩種方法可以做到這一點:

當您的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 
    } 
} 
+0

非常感謝Ikai! – Apples

+0

NP亞倫。如果這是最好的答案,那麼如果您將此問題設置爲已回答,那麼它會非常有幫助,因此當我正在尋找幫助人員時,它不會在我的提要中彈出。 –

+0

我也想要,但它還沒有爲我工作。當通過Java嘗試並且通過api資源管理器嘗試時,我沒有返回任何通道,狀態永遠不會被填充。 – Apples

相關問題