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

Posted

技术标签:

【中文标题】如何确定用户是不是订阅了 youtube 频道【英文标题】:How to find out if user is subscribed to youtube channel or not如何确定用户是否订阅了 youtube 频道 【发布时间】:2016-09-16 22:23:30 【问题描述】:

我的页面上有 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.

谢谢

【问题讨论】:

它已经过时了,但我想知道。这个问题你解决了吗?? 【参考方案1】:

有两种方法可以检索用户的订阅:

要请求当前登录用户订阅的提要,请向以下 URL 发送 GET 请求。注意:对于此请求,您必须提供授权令牌,以便 YouTube 验证用户是否已授权访问资源。

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

*要请求其他用户订阅的提要,请向以下 URL 发送 GET 请求。请注意,此请求不需要用户授权。

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

在上面的 URL 中,您应该将文本 userId 替换为用户的 YouTube 用户 ID。出于向后兼容的目的,API 还支持指定用户的 YouTube 用户名。

您可以从中获取列表或空响应,这意味着用户没有订阅频道。您可以使用该列表来过滤他们是否订阅。

【讨论】:

【参考方案2】:

我将 cookie 与 Youtube 订阅者代码结合使用。

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

我在 Youtube 返回订阅事件时添加 createCookie,在取消订阅事件时添加擦除Cookie,然后是适当的重定向。由于这段代码不是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查看我的例子

【讨论】:

是否可以激励订阅点击?希望 YT 不会为此暂停帐户【参考方案3】:

你可以用它来顺利地做到这一点..

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

【讨论】:

问题是这种方法会要求用户授权我的页面供用户访问 youtube 数据,这是我想避免的。 请看看这个问题。This will help you out

以上是关于如何确定用户是不是订阅了 youtube 频道的主要内容,如果未能解决你的问题,请参考以下文章

YouTube API v3 检测是不是订阅了频道

在搜索 youtube api 3 中获取号码订阅频道

如何使用 YouTube Analytics API 获取任何 Youtube 频道的订阅用户列表及其详细信息?

如何使用 Android 应用为用户订阅 youtube 频道?

如何在Roku频道中传输Youtube视频? [关闭]

如何获得 Youtube 频道的订阅者数量?