ClientLogin'den OAuth 2.0'a Geçiş

Ikai Lan, YouTube Developer Relations – June 2013

YouTube API'leri, kullanıcı isteklerini yetkilendirmek için OAuth 2.0 kullanır. ClientLogin kimlik doğrulamasını mı yoksa YouTube API'lerinde de benzer bir desteği destekleyip ekleymeyeceğimize sık sık soru soruyoruz. Ancak, 20 Nisan 2012 itibarıyla ClientLogin ürününü resmi olarak kullanımdan kaldırdık ve böyle bir mekanizma eklemeyi planlamıyoruz.

YouTube kullanıcılarınız için çeşitli OAuth 2.0 yetkilendirme akışlarını desteklemenin ClientLogin sürümünden daha iyi olduğunu düşünmemizin birçok nedeni vardır. Bu akışlar masaüstü uygulamaları, yalnızca web uygulamaları, yerel mobil uygulamalar ve hatta gelişmiş giriş mekanizmalarına sahip olmayan televizyonlar gibi cihazlarda çalışan uygulamalar için kullanım alanlarını destekler. Bu işlem, ClientLogin kullanılarak yapılması zor bir işlemdir. Ayrıca, ClientLogin adlı içerik üreticinin birçok geliştirici için lansman sonrasında daha fazla baş ağrısına neden olduğunu tespit ettik. Bu sorunlardan bazıları blog yayınımızda (ClientLogin #FAIL) açıklanmıştır.

Sunucu tarafı, bağımsız komut dosyaları için OAuth 2.0 kullanma

Birçok geliştirici, tarayıcıları olmadan sunucularda çalışan komut satırı komut dosyalarını yetkilendirmek için ClientLogin kullanır. OAuth 2.0 kullanıldığında neredeyse her zaman bir tarayıcı devreye girer. Bunun tek istisnası, GoogleAuthUtil. aracılığıyla jeton getirmek için Google Play Services kullanan bir Android uygulaması üzerinde olmanızdır.

Yalnızca web akışında, bir kullanıcı adına kimliği doğrulanmış API çağrıları yapmak isteyen bir web sitesi, uygulamanın neye erişmeye çalıştığını açıklayan bir google.com kimlik doğrulama sayfasına yönlendirmelidir. Ardından web uygulaması, API çağrıları yapmak için kullandığı bir jeton alır. Bunun ardından kullanıcı, connected apps and sites sayfasını kullanarak uygulamanın erişimini istediği zaman iptal edebilir.

Python kod örneklerimiz, komut satırı komut dosyalarının nasıl tarayıcı başlatabileceğini ve terminal penceresinden API çağrıları yapabileceğini, yetkilendirme yönlendirmesinden sonra kodu dinlemek için yerel bir sunucu oluşturabileceğini ve gelecekteki API çağrıları için otomatik olarak bir jeton kaydedebileceğini göstermektedir. Bu uygulamanın bir örneğini aşağıda bulabilirsiniz:

Kullanılan jeton bir ASCII dizesidir. offline jetonuysa taşınabilir. Alınan jetonu kullandığınızda, komut dosyasını masaüstü bilgisayarınızda çalıştırabilir, ardından kodun GUI olmayan uzak bir sunucuda kopyalanıp kullanılmasını sağlayabilirsiniz. Bunun için kodun, aynı istemci kimliği ve sırra sahip bir OAuth 2.0 istemcisini örneklendirmesi gerekir. Python'a ek olarak, diğer programlama dilleri için Google API istemci kitaplıkları da jetonları yönetmek için yardımcı yöntemler sunar. Bunlar, istemciler arasında paylaşılabilir ve hatta doğrudan bir istemci başlığında veya bir URL parametresi olarak alt düzey HTTP kitaplıklarında kullanılabilir.

Çevrimdışı jeton kullanan sunucu tarafı komut dosyalarına bazı örnekler:

  • YouTube'a otomatik olarak yüklenecek yeni videolar için bir dizini izleyen arka plan programı
  • Oynatma listelerini her gün yeni içeriklerle güncelleyen bir cron işi
  • YouTube Analytics API aracılığıyla video verilerini izleyen ve belirli etkinlikler oluştuğunda (ör. toplam izlenme süresi bir sınırı aştığında) kanal yöneticilerine bildirim gönderen bir komut dosyası. Bu durumda, Analytics API ClientLogin'i desteklemediğinden OAuth 2.0'ın desteklenen tek yetkilendirme yöntemi olduğunu unutmayın.

Uzun ömürlü erişim jetonları ile ilgili bölüm, sunucu tarafı işlemleri için kullanılabilecek çevrimdışı jetonların nasıl oluşturulacağı hakkında daha fazla ayrıntı sağlar.

İstemci kimliği ve istemci gizli anahtarı ile ilgili en iyi uygulamalar

Aynı istemci kimliğini ve gizli çifti paylaşan tüm kodlar aynı erişim jetonlarını kullanabilir. İstemci kimliği ve istemci gizli anahtarları erişimini, kuruluşunuzdaki makineler ve cihazlarda çalışan kodla sınırlamak en iyisidir.

İstemci kimliğinizi ve istemci gizli anahtarınızı yerel mobil uygulama kodunuza eklemeyin. Bir mobil cihazdan OAuth 2.0 kimlik doğrulamasını yapan tüm geliştiriciler, isteğin yalnızca ekibiniz tarafından yayınlanan bir uygulamadan geldiğini doğrulamak için ek bilgiler isteyen "Yüklü uygulama" istemci kimliğini kullanmalıdır.

Android cihazlarda uygulamanız, istemci kimliği ve istemci gizli anahtarı kullanmak yerine paket adı ve imzalama sertifikası karması kullanılarak tanımlanır. iOS cihazlarda paket kimliği ve uygulama mağazası kimliği kullanılır. Bu bilgileri almayla ilgili resmi dokümanları Google API Console yardım sayfasında bulabilirsiniz.

Hizmet hesapları YouTube API ile çalışmaz

Hizmet hesapları ilişkili bir YouTube kanalı gerektirdiği için hizmet hesapları YouTube Data API çağrılarında kullanılamaz ve yeni veya mevcut kanalları hizmet hesaplarıyla ilişkilendiremezsiniz. YouTube Data API'yi çağırmak için hizmet hesabı kullanıyorsanız API sunucusu, hata türü unauthorized ve nedeni youtubeSignupRequired olarak ayarlanmış bir hata döndürür.

YouTube API'ye çevrimdışı/uzun süreli erişim

OAuth 2.0, kısa ömürlü jetonlara ve uzun ömürlü jetonlara sahiptir. Tek seferlik işlemler için en iyi seçenek kısa ömürlü erişim jetonlarıdır. Bu jetonların geçerliliği, verildikten kısa bir süre sonra sona erer. Uzun süreli işlerde, kısa ömürlü erişim jetonlarını getirmek için kullanılan yenileme jetonu edinmeyi düşünebilirsiniz.

Uygulamanızın kısa ömürlü bir erişim jetonu değil, uzun ömürlü bir yenileme jetonu almasını sağlamak için bir istemci kimliği oluştururken "Yüklü Uygulama" akışını kullanın ve "Yüklü uygulama türü" değeri olarak Other değerini seçin:

Bu kullanım alanı için "Yüklü uygulama" akışını kullanmanız önerilir. Bir web uygulamasında YouTube API'ya uzun süreli erişim elde etmek istiyorsanız ilk yetkilendirme isteğinde veya istemci yapılandırmanızda access_type parametresini offline ve approval_prompt parametresini force olarak ayarlayarak bir URL alabilirsiniz. Bazı istemci kitaplıkları, erişim jetonlarının getirilmesini ve yenilenmesini yönetir. Kendi özel yetkilendirme kodunuzu yazmak istiyorsanız, kodunuz için temel olarak kullanabileceğiniz bir Google Kod blogunda blog yayını yayınladık.

Telefonlar, tabletler ve diğer cihazlarla OAuth 2.0 kullanma

Geliştiriciler Android uygulaması yazarken yetkilendirme ayrıntılarını işlemek için Google Play services ürününden yararlanabilir. Google Play Hizmetleri, YouTube platformu API'leri de dahil olmak üzere tüm Google API'leri için standart yetkilendirme akışı sağlar. Bu yaklaşım, Android uygulamanızın kullanıcıları için ClientLogin kullanan özel bir kimlik doğrulamadan çok daha iyi bir kullanıcı deneyimi sağlayacaktır.

Google, iOS cihazlarda iki seçenek sunar:

"İkinci ekran" olarak işlev görmesi amaçlanan cihazlar veya kullanımı kolay giriş mekanizmaları olmayan televizyonlar gibi cihazlar için tercih edilen yaklaşım Cihazlar için OAuth 2.0'dır. Cihazlar için OAuth 2.0, yetkilendirme isteği gerektiğinde bir kullanıcı için benzersiz bir kod sunarak çalışır. Bu noktada kullanıcılardan dizüstü bilgisayar veya telefon gibi başka bir cihazda http://google.com/device sitesine göz atmaları ve benzersiz kodu girmeleri istenir. Uygulama aşağıdakine benzer bir ekran gösterir:

Kullanıcı kodu başka bir cihazda girerken, uygulama, kodun girilip girilmediğini görmek için düzenli aralıklarla anket yapar. Alınan API'ler, API çağrıları yapmak için bir jeton alır. Bu özelliğin nasıl kullanıldığını görmek için web özellikli tüm cihazlarda çalıştırılabilen demoyu inceleyin. Platformdan bağımsız API'nin kendisi web oluşturma özellikleri olmayan cihazlar için faydalıdır. Demonun referans olarak kullanılması için Python'da örnek kodu yayınladık.

Özet

OAuth 2.0 yetkilendirmesi, YouTube yetkilendirmesi gerektiren geliştiricilere esneklik sağlar. ClientLogin hakkında bilgi sahibi olan geliştiriciler, uygulamalarını OAuth 2.0'ı kullanacak şekilde yapılandırmaya başlamak için biraz daha fazla çalışma yapılması gerektiğini anlayabilir. Ancak OAuth 2.0 uygulamaları, taşınan son kullanıcılar için birden çok platformda daha fazla esneklik, güvenlik ve kullanılabilirlik sunar.

OAuth 2.0 veya bu makaledeki örneklerden herhangi biriyle ilgili başka sorularınız varsa lütfen StackOverflow'da youtube-api etiketi ile sorabilirsiniz.