1

チャンネルがユーザーによって作成されたかどうかに関係なく、YouTube API はその特定のユーザーのチャンネルを返します。

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 チャンネルがアクティブかどうかを確認する方法を教えてください。アップロードを試みる必要がありますか?

4

1 に答える 1

5

これを行うには、次の 2 つの方法があります。

プレイリストの管理や動画のアップロードなどの 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」が表示されたら、何かしたいと思うでしょう。

もう1つの方法は、事前に確認することです。Channel.List 呼び出しを行い、"items/status" を確認します。「true」に等しいブール値「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
    }
}
于 2013-07-02T15:10:52.903 に答える