2013-07-02 4 views
1

Он выглядит независимо от того, был ли канал создан пользователем, а вы вернете канал для этого конкретного пользователя.Как проверить, активен ли канал 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, он заявляет, что «Вы должны создать канал для загрузки видео. Создание канала» или если происходит к URL-адресу без аутентификации пользователя, он скажет: «Этот канал недоступен в данный момент. Повторите попытку позже».

Как проверить, активен ли канал 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 и проверьте «items/status». Вы ищете логическое значение «isLinked» равным «true». Обратите внимание, что я вставил бросок в этом примере кода, так как в версии этого образца, клиент возвращается значение типа String вместо набранного Boolean:

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 explorer статус никогда не заполняется. – Apples

Смежные вопросы