Ikai Lan, YouTube Developer Relations – June 2013
YouTube API'leri, kullanıcı isteklerini yetkilendirmek için OAuth 2.0'ı kullanır. Gelecekte YouTube API'lerine ClientLogin kimlik doğrulama veya benzer bir özellik ekleyip eklemeyeceğimiz sıkça soruluyor. Ancak 20 Nisan 2012 itibarıyla ClientLogin resmi olarak desteği sonlandırıldı ve böyle bir mekanizma ekleme planımız yok.
OAuth 2.0 yetkilendirmesinin çeşitli akışlarını desteklemenin, YouTube kullanıcıları için ClientLogin'dan daha iyi olmasının birçok nedeni vardır. Bu akışlar; masaüstü uygulamaları, yalnızca web uygulamaları, mobil uygulamalar ve hatta gelişmiş giriş mekanizmalarına sahip olmayan televizyon gibi cihazlarda çalışan uygulamalar için kullanım alanlarını destekler. Bu, ClientLogin kullanılarak yapılması zor bir işlemdir. Ayrıca, ClientLogin'nın lansman sonrasında birçok geliştirici için daha fazla sorun yarattığını tespit ettik.
Sunucu tarafı, bağımsız komut dosyaları için OAuth 2.0'ı kullanma
Birçok geliştirici, tarayıcısı olmayan sunucularda çalışan komut satırı komut dosyalarını yetkilendirmek için ClientLogin kullanır. OAuth 2.0'da neredeyse her zaman bir tarayıcı kullanılır. Bunun tek istisnası, Google Play Services kullanarak GoogleAuthUtil. üzerinden jeton getiren bir Android uygulaması üzerinde çalışırken geçerlidir.
Yalnızca web'e yönelik akışta, bir kullanıcı adına kimliği doğrulanmış API çağrıları yapmak isteyen bir web sitesi, kullanıcıyı uygulamanın neye erişmeye çalıştığını açıklayan bir google.com kimlik doğrulama sayfasına yönlendirmelidir. Web uygulaması daha sonra API çağrıları yapmak için kullandığı bir jeton alır. Kullanıcı, connected apps and sites sayfasını kullanarak uygulamanın erişimini dilediği zaman iptal edebilir.
Python kod örneklerimiz, komut satırı komut dosyalarının nasıl tarayıcı başlatabileceğini ve bir terminal penceresinden API çağrıları yapabileceğini, yetkilendirme yönlendirmesinden sonra kodu dinlemek için nasıl yerel bir sunucu oluşturabileceğini ve gelecekteki API çağrıları için nasıl otomatik olarak jeton kaydedebileceğini gösterir. Bu özelliğin kullanımına dair bir video aşağıda yer almaktadır:
Kullanılan jeton bir ASCII dizesidir. offline jetonu ise taşınabilir. Alınan jetonu kullanarak komut dosyasını masaüstünüzde çalıştırabilir, ardından kodu aynı istemci kimliği ve gizli anahtarıyla bir OAuth 2.0 istemcisi oluşturması koşuluyla GUI'si olmayan uzak bir sunucuya kopyalayıp kullanabilirsiniz. Python'a ek olarak, diğer programlama dillerine yönelik Google API istemci kitaplıkları da jetonları yönetmek için yardımcı yöntemler sağlar. Bu yöntemler, istemciler arasında paylaşılabilir ve hatta istemci üstbilgisinde veya URL parametresi olarak doğrudan daha düşük düzeyli HTTP kitaplıklarında kullanılabilir.
Çevrimdışı jetonları kullanan sunucu tarafı komut dosyalarına bazı örnekler:
- Bir dizini izleyerek YouTube'a otomatik olarak yüklenecek yeni videoları kontrol eden bir 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 (ör. toplam izlenme süresinin bir sınırı aşması) gerçekleştiğinde kanal yöneticilerini bilgilendiren 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 süreli erişim jetonları bölümünde, sunucu tarafı işlemlerde kullanılabilecek çevrimdışı jetonların nasıl oluşturulacağı hakkında daha ayrıntılı bilgi verilmektedir.
İstemci kimliği ve istemci sırrı ile ilgili en iyi uygulamalar
Aynı istemci kimliği ve gizli çiftini paylaşan tüm kodlar aynı erişim jetonlarını kullanabilir. İstemci kimliğine ve istemci gizli anahtarlarına erişimi, kuruluşunuzdaki makinelerde ve cihazlarda çalışan kodlarla kısıtlamanız önerilir.
İstemci kimliğinizi ve istemci gizli anahtarınızı yerel mobil uygulamalarınızın koduna dahil etmeyin. Mobil cihazdan OAuth 2.0 kimlik doğrulaması yapan tüm geliştiriciler, isteğin yalnızca ekibiniz tarafından yayınlanan bir uygulamadan geldiğini doğrulamak için ek bilgi isteyen "Yüklü uygulama" istemci kimliğini kullanmalıdır.

Android cihazlarda, istemci kimliği ve istemci gizli anahtarı kullanmak yerine uygulamanız, paket adı ve imzalama sertifikası karmasının birleşimi kullanılarak tanımlanır. iOS cihazlarda paket kimliği ve uygulama mağazası kimliği kullanılır. Bu bilgileri alma ile ilgili resmi dokümanları Google Cloud console yardım sayfasında bulabilirsiniz.
Hizmet hesapları YouTube API'siyle çalışmaz
Hizmet hesapları, YouTube Data API çağrıları için çalışmaz. Bunun nedeni, hizmet hesaplarının ilişkili bir YouTube kanalı gerektirmesi ve yeni veya mevcut kanalları hizmet hesaplarıyla ilişkilendirememenizdir. YouTube Data API'yi çağırmak için bir 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'da kısa ömürlü ve uzun ömürlü jetonlar bulunur. Tek seferlik işlemler için kısa ömürlü erişim jetonları en iyi seçenektir. Bu jetonların süresi, verildikten kısa süre sonra dolar. Uzun süren işler için kısa ömürlü erişim jetonlarını getirmek üzere kullanılan bir yenileme jetonu edinmeyi düşünebilirsiniz.
Uygulamanızın kısa süreli bir erişim jetonu yerine uzun süreli bir yenileme jetonu almasını sağlamak için istemci kimliği oluştururken "Yüklü Uygulama" akışını kullanın ve "Yüklü uygulama türü" değeri için Other seçeneğini belirleyin:

Bu kullanım alanı için "Yüklü uygulama" akışını kullanmanız önerilir. Bir web uygulamasında YouTube API'ye uzun süreli erişmeniz gerekiyorsa ilk yetkilendirme isteğinde veya istemci yapılandırmanızda access_type parametresini offline, approval_prompt parametresini ise force olarak ayarlayarak bir tane alabilirsiniz. Bazı istemci kitaplıkları, erişim jetonlarının getirilmesini ve yenilenmesini yönetir. Kendi özel yetkilendirme kodunuzu yazmak istiyorsanız kodunuzun temeli olarak kullanabileceğiniz bir Google Code blog yayını yayınladık.
Telefon, tablet ve diğer cihazlarda OAuth 2.0'ı kullanma
Geliştiriciler, Android uygulamaları yazarken yetkilendirme ayrıntılarını işlemek için Google Play services'dan yararlanabilir. Google Play Hizmetleri, YouTube platformu API'leri de dahil olmak üzere tüm Google API'leri için standart bir yetkilendirme akışı sunar. Bu yaklaşım, ClientLogin kullanılarak yapılan özel kimlik doğrulamaya kıyasla Android uygulamanızın kullanıcılarına çok daha iyi bir kullanıcı deneyimi sunar.

Google, iOS cihazlarda iki seçenek sunar:
- Google ürünlerinde oturum açmayı entegre eden ve sosyal özellikleri etkinleştiren Google+ Platform for iOS
- gtm-oauth2 toolkit: Yetkilendirme UIWebView sağlar ve jetonları yönetir.
"İkinci ekran" cihazı olarak kullanılmak üzere tasarlanmış cihazlar veya kolay kullanılabilen giriş mekanizmalarına sahip 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 kullanıcıya 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 adresine gidip benzersiz kodu girmeleri istenir. Uygulama, aşağıdaki gibi bir ekran gösterir:

Kullanıcı kodu başka bir cihaza girerken uygulama, kodun girilip girilmediğini görmek için düzenli olarak yoklama yapar. Bu işlem tamamlandıktan sonra API çağrıları yapmak için bir jeton alınır. Bu özelliği uygulamada görmek için web özellikli herhangi bir cihazda çalıştırılabilen demoya göz atın. API'nin kendisi platformdan bağımsızdır. Bu nedenle, web oluşturma özelliği olmayan cihazlarda kullanılabilir. Demoda referans olarak kullanılacak Python'da örnek kodu yayınladık.
Özet
OAuth 2.0 yetkilendirmesi, YouTube yetkilendirmesi gerektiren geliştiricilere esneklik sağlar. ClientLogin ile ilgili deneyimi olan geliştiriciler, uygulamalarını OAuth 2.0 kullanacak şekilde ayarlamanın başlangıçta biraz daha fazla çalışma gerektirdiğini görebilir. Ancak OAuth 2.0 uygulamaları, taşındıktan sonra son kullanıcılar için birden fazla platformda daha fazla esneklik, güvenlik ve kullanılabilirlik sunar.
OAuth 2.0 veya bu makaledeki örneklerle ilgili başka sorularınız olursa lütfen StackOverflow'da youtube-api etiketiyle sorun.