2014-04-03 2 views
4

Я хочу, чтобы узнать, подписан ли пользователь, прошедший аутентификацию, на определенный канал YouTube в API YouTube версии 3.YouTube API v3 обнаруживает, если подписан на канал

Возможным решением было бы получить список всех подписей текущего пользователя, прошедшего проверку подлинности, и проверить, содержится ли в этом списке идентификатор канала. Это было бы очень неэффективным решением и могло занять очень много времени, если у пользователя есть сотни подписей.

Есть ли простой способ проверить это? Я просмотрел всю документацию API и ничего не нашел.

ответ

9

Использовать метод subscriptions#list и пройти mine = true и идентификатор канала, который вы хотите зарегистрировать в forChannelId. Если аутентифицированный пользователь не подписан на этот канал, он вернет пустой список.

+0

Это прекрасно работает, спасибо большое! :) – JonasG

+0

@ Виниций Пинто, пожалуйста, взгляните на этот вопрос? речь идет о той же проблеме. http://stackoverflow.com/questions/28189354/get-youtube-channel-subscribers-via-youtube-api –

+0

@JonasG Я пытаюсь сделать то же самое после аутентификации пользователя и получить токен доступа, а затем перенаправить на ссылка на этот токен http://domain.com/google/test.php?code=access здесь, чем $ data = file_get_contents ('https://www.googleapis.com/youtube/v3/subscriptions?part=snippet & maxResults = 50 & access_token = '. $ Code.' & Mine = true & key = My API Key Here '); var_export ($ data) Но я получаю «ложь» и ошибка в этом вопросе http://stackoverflow.com/questions/28215693/list-user-subscriptions-to-all-youtube-channels-after-getting- токен доступа Надеюсь, вы сможете с этим справиться. Заранее спасибо. –

0
checkSubscribe (params) { 
    var request = 
gapi.client.youtube.subscriptions.list(removeEmptyParams(params)); 
    request.execute((response) => { 
    console.log(response); 
    if (response.code !== 401 && response.code !== 400 && response.items[0]) { 
     console.log('response'); 
     console.log(response); 
    } 
    }); 
} 
    removeEmptyParams(params)[![enter image description here][1]][1]{ 
    for (const pra in params) { 
     if (!params[pra] || params[pra] === 'undefined') { 
     delete params[pra]; 
    } 
    } 
    return params; 
    } 

checkSubscribe(
    {part: 'snippet, contentDetails', mine: true}, 
    {'forChannelId':'PUT-YOUR-CHANEL--ID','onBehalfOfContentOwner': ''} 
);