我在你的页面上有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.
由于
答案 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。
查看我的示例