Von ClientLogin zu OAuth 2.0 wechseln

Ikai Lan, YouTube Developer Relations – June 2013

YouTube-APIs verwenden OAuth 2.0 zur Autorisierung von Nutzeranfragen. Wir werden häufig gefragt, ob wir in Zukunft Unterstützung für die ClientLogin-Authentifizierung oder Ähnliches in YouTube-APIs hinzufügen werden. Wir haben ClientLogin am 20. April 2012 offiziell eingestellt und es ist nicht geplant, einen solchen Mechanismus hinzuzufügen.

Es gibt zahlreiche Gründe, warum wir der Meinung sind, dass die Unterstützung verschiedener OAuth 2.0-Autorisierungsabläufe für YouTube-Nutzer besser ist als ClientLogin. Diese Abläufe unterstützen Anwendungsfälle für Desktopanwendungen, reine Webanwendungen, mobile Anwendungen und sogar Anwendungen, die auf Geräten wie Fernsehern ausgeführt werden, die keine ausgefeilten Eingabemechanismen haben. Das ist mit ClientLogin nur schwer möglich. Außerdem haben wir festgestellt, dass ClientLogin nach der Einführung bei vielen Entwicklern zu Problemen führt.

OAuth 2.0 für serverseitige, eigenständige Skripts verwenden

Viele Entwickler verwenden ClientLogin, um Befehlszeilenscripts zu autorisieren, die auf Servern ohne Browser ausgeführt werden. Bei OAuth 2.0 ist fast immer ein Browser beteiligt. Die Ausnahme ist, wenn Sie an einer Android-App arbeiten, die Google Play Services verwendet, um Tokens über GoogleAuthUtil. abzurufen.

Bei einem reinen Webvorgang muss eine Website, die authentifizierte API-Aufrufe im Namen eines Nutzers ausführen möchte, den Nutzer zu einer google.com-Authentifizierungsseite weiterleiten, auf der erklärt wird, worauf die Anwendung zugreifen möchte. Die Webanwendung erhält dann ein Token, mit dem sie API-Aufrufe durchführt. Der Nutzer kann den Zugriff der Anwendung dann jederzeit über die Seite connected apps and sites widerrufen.

In unseren Python-Codebeispielen wird gezeigt, wie mit Befehlszeilenskripts ein Browser gestartet und API-Aufrufe über ein Terminalfenster ausgeführt werden können. Außerdem wird gezeigt, wie ein lokaler Server erstellt wird, der nach der Autorisierungsumleitung auf den Code wartet, und wie ein Token für zukünftige API-Aufrufe automatisch gespeichert wird. Ein Video dazu ist unten zu sehen:

Das verwendete Token ist ein ASCII-String. Wenn es sich um ein offline-Token handelt, ist es übertragbar. Mit dem abgerufenen Token können Sie das Script auf Ihrem Computer ausführen und den Code dann auf einen Remote-Server ohne GUI kopieren und verwenden, sofern der Code einen OAuth 2.0-Client mit derselben Client-ID und demselben Clientschlüssel instanziiert. Zusätzlich zu Python bieten die Google API-Clientbibliotheken für andere Programmiersprachen auch Hilfsmethoden zum Verwalten von Tokens, die zwischen Clients geteilt und sogar direkt in HTTP-Bibliotheken auf niedrigerer Ebene in einem Clientheader oder als URL-Parameter verwendet werden können.

Beispiele für serverseitige Skripts, die Offlinetoken verwenden:

  • Ein Daemon, der ein Verzeichnis nach neuen Videos durchsucht, um sie automatisch auf YouTube hochzuladen
  • Ein Cronjob, der Playlists täglich mit neuen Inhalten aktualisiert
  • Ein Script, das Videodaten über die YouTube Analytics API überwacht und Kanalmanager benachrichtigt, wenn bestimmte Ereignisse eintreten, z. B. wenn die gesamte Wiedergabezeit ein Limit überschreitet. Beachten Sie, dass in diesem Fall OAuth 2.0 die einzige unterstützte Autorisierungsmethode ist, da die Analytics API ClientLogin nicht unterstützt.

Im Abschnitt zu Langfristigen Zugriffstokens finden Sie weitere Informationen zum Generieren der Offlinetokens, die für serverseitige Prozesse verwendet werden können.

Best Practices für Client-ID und Clientschlüssel

Für jeden Code, der dieselbe Client-ID und dasselbe Client-Schlüsselpaar verwendet, können dieselben Zugriffstokens verwendet werden. Es ist am besten, den Zugriff auf Client-ID und Clientschlüssel auf Code zu beschränken, der auf Computern und Geräten in Ihrer Organisation ausgeführt wird.

Nehmen Sie Ihre Client-ID und Ihren Clientschlüssel nicht in den Code Ihrer nativen mobilen Anwendungen auf. Alle Entwickler, die die OAuth 2.0-Authentifizierung über ein Mobilgerät durchführen, sollten die Client-ID „Installierte Anwendung“ verwenden. Dabei werden zusätzliche Informationen angefordert, um zu bestätigen, dass die Anfrage nur von einer von Ihrem Team veröffentlichten Anwendung stammt.

Auf Android-Geräten wird Ihre Anwendung nicht mit einer Client-ID und einem Clientschlüssel, sondern mit einer Kombination aus dem Paketnamen und einem Hash des Signaturzertifikats identifiziert. Auf iOS-Geräten werden die Paket-ID und die App Store-ID verwendet. Die offizielle Dokumentation zum Abrufen dieser Informationen finden Sie auf der Google Cloud console-Hilfeseite.

Dienstkonten funktionieren nicht mit der YouTube API

Dienstkonten funktionieren nicht für YouTube Data API-Aufrufe, da für Dienstkonten ein verknüpfter YouTube-Kanal erforderlich ist. Neue oder vorhandene Kanäle können nicht mit Dienstkonten verknüpft werden. Wenn Sie ein Dienstkonto zum Aufrufen der YouTube Data API verwenden, gibt der API-Server einen Fehler zurück. Der Fehlertyp ist auf unauthorized und der Grund auf youtubeSignupRequired festgelegt.

Offline-/Langzeit-Zugriff auf die YouTube API

OAuth 2.0 hat kurzlebige und langlebige Tokens. Für einmalige Vorgänge sind kurzlebige Zugriffstokens die beste Option. Diese Tokens laufen kurz nach der Erteilung ab. Für Jobs mit langer Laufzeit sollten Sie ein Aktualisierungstoken abrufen, mit dem kurzlebige Zugriffstokens abgerufen werden.

Damit Ihre Anwendung ein langlebiges Aktualisierungstoken und kein kurzlebiges Zugriffstoken erhält, verwenden Sie beim Erstellen einer Client-ID den Ablauf „Installierte Anwendung“ und wählen Sie für den Wert „Typ der installierten Anwendung“ Other aus:

Für diesen Anwendungsfall empfehlen wir den Ablauf „Installierte Anwendung“. Wenn Sie in einer Webanwendung einen langfristigen Zugriff auf die YouTube API benötigen, können Sie einen solchen Zugriff abrufen, indem Sie in der ersten Autorisierungsanfrage oder in Ihrer Clientkonfiguration den Parameter access_type auf offline und den Parameter approval_prompt auf force festlegen. Einige Clientbibliotheken übernehmen das Abrufen und Aktualisieren von Zugriffstokens. Wenn Sie einen eigenen benutzerdefinierten Autorisierungscode schreiben möchten, haben wir einen Blogbeitrag im Google Code-Blog veröffentlicht, den Sie als Grundlage für Ihren Code verwenden können.

OAuth 2.0 mit Smartphones, Tablets und anderen Geräten verwenden

Beim Schreiben von Android-Anwendungen können Entwickler Google Play services verwenden, um die Autorisierungsdetails zu verarbeiten. Die Google Play-Dienste bieten einen Standardautorisierungsablauf für alle Google-APIs, einschließlich APIs für die YouTube-Plattform. Diese Methode bietet Nutzern Ihrer Android-App eine wesentlich bessere Nutzererfahrung als eine benutzerdefinierte Authentifizierung mit ClientLogin.

Auf iOS-Geräten bietet Google zwei Optionen:

  • Google+ Platform for iOS, in dem die Anmeldung für Google-Produkte integriert ist und das auch soziale Funktionen ermöglicht
  • gtm-oauth2 toolkit, das eine Autorisierung UIWebView bereitstellt und Tokens verwaltet

Für Geräte, die als „Second Screen“-Geräte oder Geräte wie Fernseher ohne benutzerfreundliche Eingabemechanismen fungieren sollen, ist OAuth 2.0 für Geräte die bevorzugte Methode. Bei OAuth 2.0 für Geräte wird ein eindeutiger Code für einen Nutzer angezeigt, wenn eine Autorisierungsanfrage erforderlich ist. Nutzer werden dann aufgefordert, auf einem anderen Gerät, z. B. einem Laptop oder Smartphone, die URL http://google.com/device aufzurufen und den eindeutigen Code einzugeben. Die Anwendung zeigt einen Bildschirm an, der in etwa so aussieht:

Während der Nutzer den Code auf einem anderen Gerät eingibt, fragt die Anwendung regelmäßig ab, ob der Code eingegeben wurde. Anschließend wird ein Token für API-Aufrufe abgerufen. Demo ansehen Die API selbst ist plattformunabhängig und daher auch für Geräte ohne Web-Rendering-Funktionen nützlich. Wir haben Beispielcode in Python für die Demo als Referenz veröffentlicht.

Zusammenfassung

Die OAuth 2.0-Autorisierung bietet Flexibilität für Entwickler, die eine YouTube-Autorisierung benötigen. Entwickler, die mit ClientLogin vertraut sind, werden feststellen, dass die Einrichtung ihrer Anwendungen für die Verwendung von OAuth 2.0 etwas mehr Aufwand erfordert. Nach der Migration bieten OAuth 2.0-Anwendungen jedoch mehr Flexibilität, Sicherheit und Benutzerfreundlichkeit auf mehreren Plattformen für Endnutzer.

Wenn Sie weitere Fragen zu OAuth 2.0 oder zu den Beispielen in diesem Artikel haben, können Sie diese gerne auf Stack Overflow mit dem Tag youtube-api stellen.