Hinweis:Die YouTube-Richtlinien für Entwickler einhalten enthält Anleitungen und Beispiele, die dir helfen, sicherzustellen, dass deine API-Clients bestimmte Abschnitte der Nutzungsbedingungen und Richtlinien der YouTube API-Dienste (API-Nutzungsbedingungen) einhalten. Der Leitfaden gibt Aufschluss darüber, wie YouTube bestimmte Aspekte der API-Nutzungsbedingungen durchsetzt, ersetzt aber keine bestehenden Dokumente.
In diesem Dokument werden die Mindestanforderungen an die Funktionalität von API-Clients definiert, die bestimmte Funktionen von YouTube API-Diensten implementieren oder Zugriff darauf bieten („API-Clients“).
Diese Anforderungen und Richtlinien sollen sicherstellen, dass API-Clients eine einheitliche Nutzererfahrung bieten, die die Interessen von YouTube-Nutzern, Rechteinhabern und Werbetreibenden schützt. Diese Regeln sind ein integraler Bestandteil der Nutzungsbedingungen für die YouTube API und müssen bei der Entwicklung und Implementierung von API-Clients eingehalten werden.
Die Anforderungen in diesem Dokument können sich ändern, damit wir die Nutzerfreundlichkeit bestehender YouTube-Funktionen verbessern können. Sie werden auch an neue und aktualisierte YouTube-Funktionen angepasst. Manchmal müssen Sie Ihre API-Clients aktualisieren, um neuen Anforderungen gerecht zu werden. Im Änderungsverlauf der Nutzungsbedingungen werden alle Änderungen dokumentiert. Sehen Sie sich dieses Dokument daher regelmäßig an oder abonnieren Sie den RSS-Feed, damit Sie schnell über Änderungen informiert werden, die sich auf Ihre API-Clients auswirken können.
Zusätzlich zu den Anforderungen in diesem Dokument empfehlen wir dringend, die in den Richtlinien für YouTube-API-Dienste beschriebenen Best Practices zu befolgen, die auch an anderer Stelle in der Dokumentation zu YouTube-API-Diensten erläutert werden. Auch wenn sie nicht unbedingt erforderlich sind, helfen diese Praktiken Ihren API-Clients, sich schneller von Fehlern zu erholen und die Kontingentnutzung zu optimieren, wenn sie YouTube API-Dienste verwenden, für die Kontingent zugewiesen wird. Gleichzeitig tragen diese Praktiken dazu bei, dass das YouTube-Ökosystem gesund bleibt und Nutzer Ihrer API-Clients und YouTube-Anwendungen die bestmögliche Erfahrung machen.
Eingebetteter YouTube-Player und Videowiedergabe
Die Anforderungen in diesem Abschnitt beziehen sich speziell auf eingebettete YouTube-Player. Die Richtlinien für YouTube API-Dienste enthalten auch mehrere Richtlinien, die für API-Clients relevant sind, die audiovisuelle YouTube-Inhalte wiedergeben.
Identität und Anmeldedaten des API-Clients
API-Clients, die den eingebetteten YouTube-Player (einschließlich der YouTube IFrame Player API) verwenden, müssen sich über den Anfrageheader HTTP Referer
identifizieren. In einigen Umgebungen wird HTTP Referer
automatisch vom Browser festgelegt. API-Clients müssen nur darauf achten, dass sie Referrer-Policy
nicht so festlegen, dass der Wert Referer
unterdrückt wird. YouTube empfiehlt die Verwendung von strict-origin-when-cross-origin
Referrer-Policy, die in vielen Browsern bereits die Standardeinstellung ist.
Wenn der YouTube-Einbettungsplayer in ein mit JavaScript window.open
erstelltes Fenster eingebettet wird, dürfen API-Clients die Funktion noreferrer
nicht verwenden, da dadurch der Referer
-Wert unterdrückt wird.
Referer festlegen
In Umgebungen, in denen HTTP Referer
standardmäßig leer ist und nicht automatisch vom Browser festgelegt wird, müssen API-Clients Maßnahmen ergreifen, um ihre Identität auf andere Weise anzugeben. Bei WebView-Integrationen wie einer mobilen App oder einer Desktop-App ist HTTP Referer
standardmäßig leer und Referer
wird in der Regel mit einer der folgenden Methoden festgelegt:
-
Mobile App mit Player in einer lokalen HTML-Datei
Bei dieser Konfiguration wird der Player in einer HTML-Datei geladen, die mit der App gebündelt ist. Wenn diese HTML-Datei geladen wird, wird durch Festlegen des Parameters
baseUrl
der ParameterReferer
festgelegt.- Android
loadDataWithBaseURL
- iOS
loadHTMLString:baseURL:
- Android
-
Mobile App ohne lokale HTML-Datei
In dieser Konfiguration wird der Player direkt von
https://www.youtube.com/embed/VIDEO_ID
geladen, ohne dass eine umschließende HTML-Datei erforderlich ist. Sie legenReferer
fest, indem Sie es als HTTP-Header hinzufügen:- Android
loadUrl
mit demReferer
-HTTP-Header, der dem ParameteradditionalHttpHeaders
hinzugefügt wurde -
iOS
loadRequest:
mit dem HTTP-HeaderReferer
, der der Anfrage hinzugefügt wurde. Beispiel:NSString *bundleId = [[NSBundle mainBundle] bundleIdentifier]; NSString *referrer = [[NSString stringWithFormat:@"https://%@", bundleId] lowercaseString]; NSURL *referrerUrl = [NSURL URLWithString:referrer]; NSString *destination = @"https://www.youtube.com/embed/VIDEO_ID"; NSURL *destinationUrl = [NSURL URLWithString:destination]; NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:destinationUrl]; [request addValue:referrerUrl forHTTPHeaderField:@"Referer"]; // Create an instance of WKWebView (omitted for simplicity), then load the NSMutableURLRequest. [webView loadRequest:request];
- Android
-
Mobile App mit Player auf einem nativen Browser-Tab
-
Android
CustomTabs
Verwenden Sie
Intent.EXTRA_REFERRER
, um den Referrer festzulegen. Verwenden Sie beim Erstellen desUri
unbedingt das Schemaandroid-app://
anstelle vonhttps://
. Beispiel:String destinationUrl = "https://www.youtube.com/embed/VIDEO_ID"; CustomTabsIntent customTabsIntent = new CustomTabsIntent.Builder().build() customTabsIntent.intent.putExtra(Intent.EXTRA_REFERRER, Uri.parse("android-app://" + context.getPackageName())); customTabsIntent.launchUrl(this, Uri.parse(destinationUrl));
-
iOS
SFSafariViewController
SFSafariViewController
unterstützt das Festlegen vonReferer
nicht. Legen Sie in diesem Fall stattdessen den Player-Parameterorigin
fest.
-
-
Desktop-App
In dieser Konfiguration legen Sie
Referer
fest, indem Sie es als HTTP-Header hinzufügen:- Microsoft .NET – Verwenden Sie
HttpRequestHeaders.Referrer
oderCoreWebView2HttpRequestHeaders.SetHeader
. - macOS: Folgen Sie der oben beschriebenen Anleitung für mobile iOS-Apps.
- Microsoft .NET – Verwenden Sie
Bei anderen Plattformen, auf denen HTTP Referer
standardmäßig leer ist, legen Sie den Wert Referer
fest, indem Sie die WebView konfigurieren, in der der Player geladen wird. Die genaue Technik kann je nach Plattform variieren.
Wenn Sie Inhaber einer Bibliothek, eines Frameworks, eines Plug-ins, eines Dienstes oder eines Wrappers sind, die von Entwicklern zum Einbetten des YouTube-Players verwendet werden, müssen Sie die App-ID aus der Umgebung abrufen (je nach Plattform ist das möglicherweise nicht möglich) oder Entwicklern erlauben, ihre App-ID zu übergeben, damit Referer
(und der Player-Parameter widget_referrer
, falls zutreffend) wie oben beschrieben festgelegt werden kann.
Format des Referrers
Wenn Sie den Referer explizit angeben, indem Sie einen WebView-Parameter festlegen oder einen HTTP-Header hinzufügen, ist das Format in der Regel eine vollständig qualifizierte URL. Geben Sie HTTPS
als Protokoll an. In der URL muss der Domainname Ihre Anwendungs-ID („App-ID“) sein, die bei dem Store registriert ist, über den Ihre App an Endnutzer verteilt wurde. Wenn Ihre App Nutzern über einen alternativen Vertriebskanal zur Verfügung gestellt wird, verwenden Sie die App-ID, die während der App-Installation beim Betriebssystem registriert wird. In den meisten Fällen ist Ihre App-ID ein umgekehrter Domainname (auch als „Reverse-DNS-Format“ bezeichnet), z. B. com.google.android.youtube
. Repräsentative Beispiele:
- Android OS und Android-Apps unter ChromeOS: App-ID
- Apple-Plattformen, einschließlich iOS, iPadOS und macOS: Bundle-ID
- Samsung Tizen: App-ID
- Linux-Distributionen:
Auf einigen Plattformen ist die App-ID kein umgekehrter Domainname. Verwenden Sie in diesen Fällen die eindeutige App-ID, die vom Store zugewiesen wird, über den die App vertrieben wird. Wenn die Store-App-ID eine generierte alphanumerische Zeichenfolge ist (die vom Store oder von Entwicklungstools zugewiesen wird und nicht vom App-Entwickler ausgewählt wurde), geben Sie sowohl den Anzeigenamen der App (wobei Leerzeichen durch Bindestriche ersetzt werden) als auch die Store-App-ID an, getrennt durch einen Punkt. Beispiel: <my-app-name>.<AppID>
. Dieser Wert sollte sich bei Änderungen der App-Version nicht ändern. Wenn die App nicht in einem Store gehostet wird, verwenden Sie die App-ID, die bei der Installation der App im Betriebssystem registriert wird. Dies ist in der Regel eine eindeutige Kennung im App-Manifest. Lassen Sie alle Details zur App-Version und zur unterstützten Architektur weg. Repräsentative Beispiele:
-
Chrome Web Store: Im Store gehostet
Die Store-App-ID ist in der Regel der letzte Teil des Pfads in der App-URL
https://chromewebstore.google.com/detail/<hyphenated-app-name>/<AppID>
. Verwenden Sie den durch Bindestriche getrennten App-Namen und die App-ID des App-Shops, um den oben beschriebenen<my-app-name>.<AppID>
-String zu erstellen. -
Windows: Store-gehostet
Die Store-App-ID ist in der Regel der letzte Teil des Pfads in der App-URL
https://apps.microsoft.com/detail/<AppID>
. Verwenden Sie die Store-App-ID, um den oben beschriebenen<my-app-name>.<AppID>
-String zu erstellen. Der Name der App mit Bindestrich muss ebenfalls angegeben werden. -
Windows: Nicht über den Store bereitstellen
Windows-Apps enthalten im App-Manifest eine Paketidentität:
Name_Version_Architecture_ResourceID_PublisherID
. Verwenden Sie nur das AttributName
. -
Xbox: Store-gehostet
Die Store-App-ID ist in der Regel der letzte Teil des Pfads in der App-URL
https://www.xbox.com/<region>/games/store/<hyphenated-app-name>/<AppID>
. Verwenden Sie den durch Bindestriche getrennten App-Namen und die App-ID des App-Shops, um den oben beschriebenen<my-app-name>.<AppID>
-String zu erstellen.
Für API-Clients mit einer hohen Anzahl von Anfragen an YouTube (siehe Nutzung und Kontingente) sind möglicherweise zusätzliche Anmeldedaten erforderlich, um auf den eingebetteten YouTube-Player zuzugreifen.
Wenn Sie diese Anforderungen nicht einhalten, kann es zu einer eingeschränkten Funktionalität des eingebetteten YouTube-Players kommen.
WebView-Typ
Wenn Sie den eingebetteten YouTube-Player in eine WebView einbinden, verwenden Sie einen der vom Betriebssystem bereitgestellten WebView-Typen, sofern verfügbar. Beispiel:
- Android-Betriebssystem:
WebView
oderCustomTabs
- Apple-Plattformen, einschließlich iOS, iPadOS, macOS:
WKWebView
oderSFSafariViewController
Größe des eingebetteten YouTube-Players
Eingebettete Player müssen einen Darstellungsbereich mit mindestens 200 x 200 Pixel haben. Wenn die Steuerung angezeigt wird, muss der Player groß genug sein, um die Steuerelemente vollständig anzuzeigen, ohne dass der Darstellungsbereich dabei die genannte Mindestgröße unterschreitet. Für 16:9-Player empfehlen wir eine Breite von mindestens 480 Pixel und eine Höhe von mindestens 270 Pixel.
Automatische Wiedergabe und Scripted Playbacks
In diesem Abschnitt geht es um die automatische Wiedergabe. Sie gilt für eingebettete YouTube-Player, die entweder den Player-Parameter autoplay
verwenden oder die automatische Wiedergabe programmatisch über die YouTube IFrame Player API oder einen anderen YouTube-API-Dienst starten.
-
Bei eingebetteten Playern, die ein Video automatisch abspielen, sollte die Wiedergabe sofort beim Laden der Seite oder sobald der eingebettete Player vollständig sichtbar ist, gestartet werden. Ein API-Client darf die automatische Wiedergabe jedoch erst starten, wenn der Player sichtbar ist und mehr als die Hälfte des Players auf der Seite oder dem Bildschirm zu sehen ist.
-
Auf einer Seite oder einem Bildschirm darf nicht mehr als ein YouTube-Player vorhanden sein, in dem Inhalte automatisch gleichzeitig abgespielt werden.
-
YouTube-Thumbnails, die eine Wiedergabe starten, müssen mindestens 120 Pixel breit und 70 Pixel hoch sein.
YouTube-Player-Attribute
Attribute und Parameter des YouTube-Players, z. B. die Darstellung des YouTube-Brandings im Player, sind in der YouTube-API-Dokumentation und den YouTube-API-Spezifikationen (https://developers.google.com/youtube) beschrieben. Du darfst keine Änderungen am YouTube-Player vornehmen, die nicht explizit in der API-Dokumentation beschrieben sind.
Overlays und Frames
Sie dürfen keine Overlays, Frames oder andere visuelle Elemente vor einem eingebetteten YouTube-Player platzieren, auch nicht vor den Steuerelementen des Players. Ebenso dürfen Sie keine Overlays, Frames oder andere visuelle Elemente verwenden, um Teile eines eingebetteten Players, einschließlich der Steuerelemente des Players, zu verdecken.
Mouseovers
Sie dürfen keine Mouseover- oder Touch-Ereignisse in einem YouTube-Player verwenden, um im Namen des Nutzers Aktionen auszulösen, z. B. das Öffnen eines Fensters oder das Abonnieren eines Kanals.
Hochladen von Videos
Wenn API-Clients es Nutzern ermöglichen, Inhalte auf mehrere Plattformen hochzuladen, sollten Nutzer die Plattformen auswählen und abwählen können, auf die sie ihre Videos hochladen möchten.
Datenanforderungen
API-Clients, die Nutzern das Hochladen von Videos auf YouTube ermöglichen, müssen Nutzern die Möglichkeit geben, die Werte in der folgenden Liste festzulegen. Alle nicht aufgeführten Attribute sind optional.
Name | Beschreibung | |
---|---|---|
Ressourceneigenschaften | ||
snippet.title |
Erforderlich. Der Titel des Videos. YouTube gibt einen Fehler zurück, wenn der Wert 100 Zeichen überschreitet. YouTube unterstützt alle gültigen UTF-8-Zeichen mit Ausnahme von < und > .
| |
snippet.description |
Erforderlich. Die Videobeschreibung. YouTube gibt einen Fehler zurück, wenn der Wert 5.000 Byte überschreitet. YouTube unterstützt alle gültigen UTF-8-Zeichen mit Ausnahme von < und > . |
|
status.privacyStatus |
Erforderlich. Die Datenschutzeinstellung des Videos. Nutzer müssen auswählen können, ob das hochgeladene Video öffentlich, privat oder nicht gelistet sein soll. | |
Anfrageparameter | ||
onBehalfOfContentOwnerChannel |
Bedingt erforderlich Wenn die Autorisierungsanmeldedaten der Anfrage einen Rechteinhaber identifizieren und der Parameter onBehalfOfContentOwner festgelegt ist, muss der API-Nutzer auch den YouTube-Kanal angeben können, auf den das Video hochgeladen wird. |
Kommentare anzeigen
Name | Beschreibung | |
---|---|---|
Ressourceneigenschaften | ||
snippet.textDisplay |
Erforderlich. Der Text des Kommentars. Der API-Client muss entweder (a) den vollständigen Text eines Kommentars oder einer Antwort auf einen Kommentar anzeigen oder (b) den Text kürzen und dem Betrachter eine Möglichkeit bieten, einfach auf den vollständigen Text zuzugreifen. Diese Anforderung gilt für alle Kommentare und Antworten auf Kommentare, unabhängig davon, mit welcher Art von Ressource die Kommentare verknüpft sind (Videos, Kanäle usw.). Der Wert der Eigenschaft snippet.topLevelComment der Ressource commentThread ist eine comment -Ressource und die Eigenschaft replies.comments[] ist eine Liste von comment -Ressourcen. Daher gilt diese Anforderung auch für die Properties snippet.topLevelComment.snippet.textDisplay und replies.comments[].snippet.textDisplay . |
|
snippet.title ( channel ) |
Erforderlich (Vorschlag) Der Titel des Kanals.
|
|
snippet.title ( video ) |
Bedingt erforderlich (Vorschlag) Der Titel des Videos. Dieser Wert muss angezeigt werden, wenn sich der Kommentar auf ein Video bezieht. | |
snippet.moderationStatus |
Bedingt erforderlich Wenn der Parameterwert moderationStatus in der API-Anfrage heldForReview oder likelySpam ist, muss der Status in der Anzeige deutlich angegeben werden. Verwenden Sie dazu den Property-Wert, eine ähnliche Formulierung (z. B. „Dieser Kommentar wird zur Überprüfung zurückgehalten“), eine Überschrift (z. B. „Zur Überprüfung zurückgehalten“) oder eine andere eindeutige Formulierung. Die Methode commentThreads.list unterstützt das Abrufen von Kommentaren basierend auf ihrem Moderationsstatus. |
Kommentare hinzufügen
Name | Beschreibung | |
---|---|---|
Ressourceneigenschaften | ||
snippet.title ( channel ) |
Erforderlich. Der Titel des Kanals.
|
|
snippet.title ( video ) |
Erforderlich. Wenn der Nutzer einen Kommentar zu einem Video hinzufügt, muss der API-Client den Titel des Videos anzeigen. | |
Weitere Anforderungen | ||
Comment author's channel name |
Erforderlich. Der API-Client muss das YouTube-Nutzerkonto, dem der Kommentar zugeordnet wird, eindeutig identifizieren. Wenn in den Autorisierungsanmeldedaten der Anfrage ein Rechteinhaber angegeben ist und der Parameter onBehalfOfContentOwner festgelegt ist, muss der API-Nutzer auch den YouTube-Kanal angeben können, dem der Kommentar zugeordnet wird. |
Antworten auf Kommentare hinzufügen
Name | Beschreibung | |
---|---|---|
Ressourceneigenschaften | ||
snippet.textDisplay |
Erforderlich. Der Text des Kommentars. Der API-Client muss den Text des Kommentars, auf den der Nutzer antwortet, gemäß den Regeln im Abschnitt Kommentare anzeigen dieses Dokuments anzeigen. | |
snippet.title ( channel ) |
Erforderlich. Der Titel des Kanals.
|
|
snippet.title ( video ) |
Erforderlich. Wenn der Nutzer auf einen Kommentar zu einem Video antwortet, muss der API-Client den Titel des Videos anzeigen. | |
Weitere Anforderungen | ||
Comment author's channel name |
Erforderlich. Der API-Client muss das YouTube-Nutzerkonto, dem die Antwort auf den Kommentar zugeordnet wird, eindeutig identifizieren. Wenn in den Autorisierungsanmeldedaten der Anfrage ein Rechteinhaber angegeben ist und der Parameter onBehalfOfContentOwner festgelegt ist, muss der API-Nutzer auch den YouTube-Kanal angeben können, dem die Kommentarantwort zugeordnet wird. |
Kommentarantworten bearbeiten oder löschen
Name | Beschreibung | |
---|---|---|
Ressourceneigenschaften | ||
snippet.textDisplay |
Erforderlich. Der Text des Kommentars. Der API-Client muss den Text des Kommentars, den der Nutzer bearbeitet oder löscht, gemäß den Regeln im Abschnitt Kommentare anzeigen dieses Dokuments anzeigen. | |
snippet.title ( channel ) |
Erforderlich. Der Titel des Kanals.
|
|
snippet.title ( video ) |
Erforderlich. Wenn der Nutzer einen Kommentar zu einem Video bearbeitet oder löscht, muss der API-Client den Titel des Videos anzeigen. | |
Weitere Anforderungen | ||
Comment author's channel name |
Erforderlich. Der API-Client muss das YouTube-Nutzerkonto, dem der Kommentar zugeordnet ist, eindeutig identifizieren. |
Nutzer im Livechat sperren oder die Sperrung aufheben
Name | Beschreibung | |
---|---|---|
Ressourceneigenschaften | ||
snippet.title ( channel ) |
Erforderlich. Der Name des YouTube-Kanals, der gesperrt oder entsperrt wird. Außerdem muss der Name mit dem Kanal verknüpft sein oder die Kanal-URL muss ebenfalls angezeigt werden. | |
Weitere Anforderungen | ||
Kanalname des Verfassers des Kommentars | Erforderlich. Der API-Client muss das YouTube-Nutzerkonto, das zum Hinzufügen oder Entfernen des Banns verwendet wird, eindeutig identifizieren. |