Von ClientLogin auf OAuth 2.0 umstellen

Ikai Lan, YouTube Developer Relations – June 2013

YouTube APIs verwenden OAuth 2.0 zur Autorisierung von Nutzeranfragen. Wir werden oft gefragt, ob wir die ClientLogin-Authentifizierung oder ähnliche Funktionen in YouTube APIs in Zukunft unterstützen werden. Die offizielle Einstellung von ClientLogin am 20. April 2012 ist allerdings nicht vorgesehen.

Es gibt zahlreiche Gründe, warum wir glauben, dass die Unterstützung verschiedener OAuth 2.0-Autorisierungen für YouTube-Nutzer besser ist als ClientLogin. Diese Abläufe unterstützen Anwendungsfälle für Desktop-Anwendungen, reine Webanwendungen, native mobile Anwendungen und sogar Anwendungen, die auf Geräten wie Fernsehern ohne ausgereifte Eingabemechanismen ausgeführt werden. Dies ist mit ClientLogin nicht ganz einfach. Wir haben außerdem festgestellt, dass die Nutzung von ClientLogin nach der Markteinführung vielen Entwicklern Kopfzerbrechen bereitet. Einige davon werden in unserem Blogpost ClientLogin #FAIL beschrieben.

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

Viele Entwickler verwenden ClientLogin, um Befehlszeilenskripts 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-Anwendung arbeiten, die Google Play Services zum Abrufen von Tokens über GoogleAuthUtil. verwendet

Bei einem regulären Webablauf 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 erläutert wird, worauf die Anwendung zugreifen möchte. Die Webanwendung empfängt dann ein Token, das für API-Aufrufe verwendet wird. Der Nutzer kann dann den Zugriff der Anwendung jederzeit über die Seite connected apps and sites widerrufen.

Unsere Python-Codebeispiele zeigen, wie Befehlszeilenskripts einen Browser starten und API-Aufrufe über ein Terminalfenster ausführen, einen lokalen Server erstellen können, der nach der Autorisierungsweiterleitung auf den Code wartet, und ein Token für zukünftige API-Aufrufe speichern. Im Folgenden finden Sie ein Video dazu:

Das verwendete Token ist ein ASCII-String. Wenn es ein offline-Token ist, ist es portabel. Mit dem abgerufenen Token können Sie das Skript auf Ihrem Desktop ausführen und dann den Code auf einem Remote-Server ohne grafische Benutzeroberfläche kopieren und verwenden. Voraussetzung ist, dass der Code einen OAuth 2.0-Client mit derselben Client-ID und demselben Secret instanziiert. Neben Python bieten die Google API-Clientbibliotheken für andere Programmiersprachen auch Hilfsmethoden zum Verwalten von Tokens, die von Clients gemeinsam verwendet werden können und sogar in untergeordneten HTTP-Bibliotheken direkt in einem Clientheader oder als URL-Parameter verwendet werden können.

Beispiele für serverseitige Skripts, die Offlinetokens verwenden:

  • Ein Daemon, der ein Verzeichnis überwacht, damit neue Videos automatisch auf YouTube hochgeladen werden
  • Ein Cronjob, der Playlists täglich mit neuen Inhalten aktualisiert
  • Ein Skript, das Videodaten über die YouTube Analytics API überwacht und Kanalmanager benachrichtigt, wenn bestimmte Ereignisse auftreten, z. B. wenn die Wiedergabezeit insgesamt überschritten wird. In diesem Fall ist OAuth 2.0 die einzige unterstützte Autorisierungsmethode, da ClientLogin von der Analytics API nicht unterstützt wird.

Im Abschnitt zu langlebigen Zugriffstoken finden Sie weitere Informationen zum Generieren von Offlinetokens, die für serverseitige Prozesse verwendet werden können.

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

Jeder Code mit derselben Client-ID und demselben Secret kann dieselben Zugriffstokens verwenden. Am besten beschränken Sie den Zugriff auf die Client-ID und die Clientschlüssel auf Code, der auf Computern und Geräten in Ihrer Organisation ausgeführt wird.

Fügen Sie Ihre Client-ID und Ihren Clientschlüssel nicht in den Code Ihrer nativen mobilen Apps ein. Alle Entwickler, die eine OAuth 2.0-Authentifizierung über ein Mobilgerät durchführen, sollten die Client-ID „Installierte Anwendung“ verwenden. Diese fordert zusätzliche Informationen an, um zu überprüfen, ob die Anfrage nur von einer Anwendung stammt, die von Ihrem Team veröffentlicht wurde.

Auf Android-Geräten wird Ihre Anwendung nicht anhand einer Client-ID und eines Clientschlüssels anhand einer Kombination aus Paketname und Signaturzertifikat-Hash identifiziert. Auf iOS-Geräten werden die Bundle-ID und die App Store-ID verwendet. Die offizielle Dokumentation zum Abrufen dieser Informationen finden Sie auf der Google API Console-Hilfeseite.

Dienstkonten funktionieren nicht mit der YouTube API

Dienstkonten funktionieren nicht für YouTube Data API-Aufrufe, da Dienstkonten einen verknüpften YouTube-Kanal erfordern und Sie keine neuen oder vorhandenen Kanäle mit Dienstkonten verknüpfen können. Wenn du die YouTube Data API über ein Dienstkonto aufrufst, gibt der API-Server einen Fehler zurück, wobei der Fehlertyp auf unauthorized und der Grund auf youtubeSignupRequired festgelegt ist.

Offline-/langlebiger Zugriff auf die YouTube API

OAuth 2.0 hat kurzlebige und langlebige Token. Für einmalige Vorgänge sind kurzlebige Zugriffstokens die beste Option. Diese Tokens laufen kurz nach ihrer Vergabe ab. Bei lang andauernden Jobs können Sie ein Aktualisierungstoken erwerben, mit dem kurzlebige Zugriffstokens abgerufen werden.

Damit Ihre Anwendung ein langlebiges Aktualisierungstoken und kein kurzlebiges Zugriffstoken erhält, verwenden Sie den Ablauf „Installierte Anwendung“, wenn Sie eine Client-ID erstellen, und wählen Sie Other für den Wert „Installierte Anwendungsart“ aus:

Es wird empfohlen, für diesen Anwendungsfall den Ablauf „Installierte Anwendung“ zu verwenden. Wenn du einen langlebigen Zugriff auf die YouTube API in einer Webanwendung benötigst, kannst du einen abrufen, indem du in der ursprünglichen Autorisierungsanfrage oder der Clientkonfiguration den Parameter access_type auf offline und den Parameter approval_prompt auf force setzt. Einige Clientbibliotheken verwalten das Abrufen und Aktualisieren von Zugriffstokens. Wenn Sie Ihren eigenen Autorisierungscode schreiben möchten, haben wir einen Blogpost 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-Apps können Entwickler Google Play services nutzen, um die Autorisierungsdetails zu verarbeiten. Google Play-Dienste bieten einen Standard-Autorisierungsablauf für alle Google APIs, einschließlich APIs für die YouTube-Plattform. Dieser Ansatz bietet eine weitaus bessere Nutzererfahrung für Nutzer Ihrer Android-App als eine benutzerdefinierte Authentifizierung mit ClientLogin.

Auf iOS-Geräten bietet Google zwei Optionen:

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

Während der Nutzer den Code auf einem anderen Gerät eingibt, fragt die Anwendung regelmäßig nach, ob er eingegeben wurde. Sobald sie vorhanden ist, wird ein Token für API-Aufrufe abgerufen. Sehen Sie sich die Demo an, die auf jedem webfähigen Gerät ausgeführt werden kann. Die API selbst ist plattformunabhängig und eignet sich daher für Geräte, die keine Web-Rendering-Funktionen haben. Wir haben Beispielcode in Python veröffentlicht, den Sie als Referenz verwenden können.

Zusammenfassung

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

Wenn Sie weitere Fragen zu OAuth 2.0 oder zu den Beispielen in diesem Artikel haben, können Sie sich mit dem Tag youtube-api auf StackOverflow an uns wenden.