2016-05-19 3 views
2

У меня есть кнопка подписки на YouTube (iframe) на моей странице. Есть ли способ узнать, подписан ли пользователь, обращающийся к сайту, или нет? Если это невозможно, может быть, есть способ узнать какой-то идентификатор пользователя, который просматривает сайт?Как узнать, подписан ли пользователь на канал YouTube или нет

Я обнаружил, что, когда пользователь подписался есть атрибут

data-is-subscribed="true" 

для кнопочного элемента, но так как это из домена YouTube я не могу доступ (по крайней мере, я не нашел, как) IFrames источник программно.

Blocked a frame with origin https://<my host ip> from accessing a frame with 
origin https://<target host ip>. Protocols, domains, and ports must match. 

Благодаря

ответ

0

Вы можете использовать это, чтобы сделать это гладко ..

Use the subscriptions#list method and pass mine = true and the channel ID you want to check in forChannelId. If the authenticated user is not subscribed to that channel, it will return an empty list 
+1

Проблема заключается в том, что этот подход будет просить пользователя разрешить мою страницу для пользователей доступа к данным YouTube, это то, что я хотел бы избежать. – ataurenis

+0

Пожалуйста, ознакомьтесь с этим вопросом .. [Это поможет вам] (http://stackoverflow.com/questions/28189354/get-youtube-channel-subscribers-via-youtube-api) –

0

Перейти к https://developers.google.com/youtube/youtube_subscribe_button

Настройте кнопку и нажмите флажок для «Мое приложение прослушивает кнопки Мероприятия."

Затем в примере кода, будет блок кода, который выглядит следующим образом:

function onYtEvent(payload) { 
    if (payload.eventType == 'subscribe') { 
    // Add code to handle subscribe event. 
    } else if (payload.eventType == 'unsubscribe') { 
     // Add code to handle unsubscribe event. 
    } 
    if (window.console) { // for debugging only 
     window.console.log('YT event: ', payload); 
    } 
} 

Поместите свой код, когда пользователь subscibes в блоке, если для подписки события.

+0

Это будет вызвано когда пользователь нажимает кнопку (un) подписаться. Я хотел бы узнать, подписался ли пользователь, когда он приходит на страницу. – ataurenis

1

Есть два способа Получение подписок пользователя:

  • Чтобы запросить фид вошедшего в подписках пользователя, отправьте запрос GET по следующему URL-адресу. Примечание. Для этого запроса вы должны предоставить токен авторизации, который позволяет YouTube проверять, разрешен ли пользователю доступ к ресурсу.

https://gdata.youtube.com/feeds/api/users/default/subscriptions?v=2

* Чтобы запросить фид подписок другого пользователя, отправьте запрос GET по следующему URL-адресу. Обратите внимание, что этот запрос не требует авторизации пользователя.

https://gdata.youtube.com/feeds/api/users/userId/subscriptions?v=2

В приведенном выше URL, вы должны заменить текст userId с пользователем YouTube пользователя ID. Для обратной совместимости API также поддерживает использование имени пользователя YouTube, указанного пользователем.

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

0

Я использую cookie в сочетании с подписчиком Youtube.

Использование кода печенье из этой публикации, Create, read, and erase cookies with jQuery

добавить createCookie когда Youtube возвращает подписываться событие, и eraseCookie когда unsubscriber событие, а затем й approproate редиректа. Поскольку этот код не является jquery, я помещаю этот код вне функции jquery ready.

 function onYtEvent(payload) { 
      console.log(payload); 
      if (payload.eventType == 'subscribe') { 
       // Add code to handle subscribe event. 
       createCookie('subscribed','yes',30); 
       location.hash = '#mainpage'; 
      } else if (payload.eventType == 'unsubscribe') { 
       // Add code to handle unsubscribe event. 
       eraseCookie('subscribed'); 
       location.hash = '#subscribepage'; 
      } 
      if (window.console) { // for debugging only 
       window.console.log('YT event: ', payload); 
      } 
     } 

затем внутри готовой функции JQuery, добавить функцию readCookie

  if (readCookie('subscribed') === 'yes') { 
       location.hash = '#mainpage'; 
      } else { 
       location.hash = '#subscribepage'; 
      } 

Я использую JQM обрабатывать мои страницы переназначения.

Целью, которую я выполнил, является то, что при первой загрузке страницы читается подписанный файл cookie, если он присутствует, я знаю, что пользователь подписался и перенаправляется на главную страницу.

Если файл cookie не существует, он будет перенаправлен на страницу подписчика, отображающую кнопку подписчика youtube.

Поэтому пользователю необходимо нажать кнопку подписки один раз. Использование API YouTube требует дополнительной аутентификации пользователя и ограничения на квоты. Я хотел, чтобы более простое решение не соответствовало этим ограничениям, поэтому файлы cookie используются, как описано выше.

Вы можете проверить мой пример на http://recipes.quickminutemeals.com

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