如何确定用户是否订阅了youtube频道

时间:2016-05-19 20:26:35

标签: javascript jquery iframe youtube youtube-api

我在你的页面上有youtube订阅按钮(iframe)。有没有办法知道访问该网站的用户是否已订阅? 如果那是不可能的,也许有办法知道某些正在查看该网站的用户ID?

我发现订阅用户时有一个属性

data-is-subscribed="true" 

对于按钮元素,但因为它来自youtube域我无法以编程方式访问(至少我没有发现如何)iframe源。

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.

由于

4 个答案:

答案 0 :(得分:1)

转到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);
  }
}

将用户的子代码放在订阅事件的if块中。

答案 1 :(得分: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

在上面的网址中,您应该将文字userId替换为用户的YouTube用户ID。为了向后兼容,API还支持指定用户的YouTube用户名。

从此可以获得列表或空响应,这意味着用户没有订阅频道。您可以使用该列表过滤订阅与否。

答案 2 :(得分: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

答案 3 :(得分:0)

我正在使用Cookie和Youtube订阅者代码。

使用此帖子中的Cookie代码Create, read, and erase cookies with jQuery

我在Youtube返回订阅事件时添加createCookie,在unsubscriber事件时添加eraseCookie,然后是适当的重定向。由于此代码不是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 ready函数中,我添加了readCookie函数

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

我正在使用JQM来处理页面重定向。

我完成的目标是首次加载页面时会读取订阅的cookie(如果存在),我知道用户已订阅,并重定向到主页。

如果cookie不存在,将重定向到显示youtube订阅者按钮的订阅者页面。

因此,用户只需按一下订阅按钮即可。 使用YouTube API需要用户进行其他身份验证,并受限于配额限制。我想要一个不受这些限制的更简单的解决方案,因此如上所述使用cookie。

您可以在http://recipes.quickminutemeals.com

查看我的示例