2016-05-19 6 views
2

Ich habe Youtube-Taste (Iframe) auf meiner Seite. Gibt es eine Möglichkeit zu wissen, ob der Benutzer, der auf die Site zugreift, abonniert ist oder nicht? Wenn das nicht möglich ist, gibt es vielleicht eine Möglichkeit, eine Art Benutzer-ID zu kennen, die die Seite anzeigt?Wie finde ich heraus, ob der Benutzer Youtube-Kanal abonniert hat oder nicht?

fand ich, dass, wenn der Benutzer

data-is-subscribed="true" 

für Button-Element ein Attribut gibt es gezeichnet ist, aber da es von youtube Domain ist kann ich nicht Zugang (zumindest habe ich nicht herausgefunden, wie man) Quelle IFrames programmatisch.

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. 

Dank

Antwort

0

Sie können dies, dass reibungslos zu tun verwenden ..

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

Das Problem ist, dass dieser Ansatz Benutzer fragen, überprüfen Sie meine Seite für die Nutzer youtube Datenzugriff zu genehmigen, das ist etwas, was ich vermeiden möchten. – ataurenis

+0

Bitte werfen Sie einen Blick auf diese Frage .. [Dies wird Ihnen helfen] (http://stackoverflow.com/questions/28189354/get-youtube-channel-subscribers-via-youtube-api) –

0

Zum https://developers.google.com/youtube/youtube_subscribe_button

Ihre Schaltfläche Konfigurieren und das Kontrollkästchen drücken für „Mein Antrag auf Schaltfläche hört Veranstaltungen."

Dann wird in dem Codebeispiel gibt es einen Block von Code sein, der wie folgt aussieht:

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

Code Setzen Sie für, wenn der Benutzer subscibes im Block, wenn für das Ereignis abonnieren.

+0

Dies wird nur aufgerufen wenn der Benutzer die Schaltfläche (un) abonnieren drückt. Ich würde gerne wissen, ob der Benutzer abonniert ist, wenn er auf die Seite kommt. – ataurenis

1

Es gibt zwei Möglichkeiten, um Abrufen von Abonnements eines Benutzers:

  • Um einen Feed der aktuell angemeldeten in anfordern Abonnements des Benutzers, eine GET-Anfrage an die folgenden URL zu senden. Hinweis: Für diese Anfrage müssen Sie ein Autorisierungstoken bereitstellen, mit dem YouTube überprüfen kann, ob der Benutzer den Zugriff auf die Ressource autorisiert hat.

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

* eine Zufuhr von anderem Benutzer Abonnements anzufordern, eine GET-Anfrage an die folgenden URL senden. Beachten Sie, dass diese Anfrage keine Benutzerautorisierung erfordert.

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

In der URL oben, sollten Sie den Text userId mit dem YouTube-Benutzer-ID des Benutzers ersetzen. Aus Gründen der Abwärtskompatibilität unterstützt die API auch die Angabe des YouTube-Benutzernamens des Nutzers.

Von diesem können Sie die Liste oder eine Nullantwort erhalten, die bedeutet, dass der Benutzer keinen abonnierten Kanal hat. Sie können diese Liste verwenden, um zu filtern, ob sie abonniert sind oder nicht.

0

Ich verwende einen Cookie in Verbindung mit Youtube-Teilnehmercode.

den Cookie-Code aus diesem Posting verwenden, Create, read, and erase cookies with jQuery

ich hinzufügen createCookie wenn Youtube ein Ereignis abonnieren zurückgibt, und eraseCookie wenn ein unsubscriber Ereignis, durch th approproate Umleitung gefolgt. Da dieser Code nicht jquery ist, lege ich diesen Code außerhalb der jquery ready-Funktion ab.

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

dann innerhalb der Jquery-Ready-Funktion, füge ich die readCookie Funktion

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

ich JQM bin mit meiner Seite Umleitungen zu behandeln.

Das Ziel, das ich erreicht habe, ist, wenn die Seite zuerst lädt den abonnierten Cookie, wenn vorhanden, ich weiß, dass der Benutzer abonniert hat, und umleiten auf die Hauptseite.

Wenn der Cookie nicht existiert, wird auf die Seite mit dem Youtube-Abonnenten-Button weitergeleitet.

Daher muss der Benutzer nur einmal die Abonnement-Taste drücken. Die Verwendung der YouTube-API erfordert eine zusätzliche Authentifizierung durch den Benutzer und unterliegt Kontingentbeschränkungen. Ich wollte eine einfachere Lösung, die diesen Beschränkungen nicht unterliegt, also werden Cookies wie oben beschrieben verwendet.

Sie können mein Beispiel bei http://recipes.quickminutemeals.com

Verwandte Themen