TV ve sınırlı girişli cihaz uygulamaları için OAuth 2.0

<

Bu dokümanda, TV, oyun konsolu ve yazıcı gibi cihazlarda çalışan uygulamalar aracılığıyla YouTube Data API'ye erişmek için OAuth 2.0 yetkilendirmesinin nasıl uygulanacağı açıklanmaktadır. Daha ayrıntılı belirtmek gerekirse bu akış, tarayıcıya erişimi olmayan veya sınırlı giriş özelliklerine sahip cihazlar için tasarlanmıştır.

OAuth 2.0, kullanıcıların kullanıcı adlarını, şifrelerini ve diğer bilgilerini gizli tutarken belirli verileri bir uygulamayla paylaşmasına olanak tanır. Örneğin, bir TV uygulaması, Google Drive'da depolanan bir dosyayı seçme izni almak için OAuth 2.0'ı kullanabilir.

Bu akışı kullanan uygulamalar ayrı ayrı cihazlara dağıtıldığından uygulamaların sır tutamayacağı varsayılır. Google API'lerine kullanıcı uygulamadayken veya uygulama arka planda çalışırken erişebilirler.

Alternatifler

Tarayıcıya ve tam giriş özelliklerine erişimi olan Android, iOS, macOS, Linux veya Windows (Evrensel Windows Platformu dahil) gibi bir platform için uygulama yazıyorsanız mobil ve masaüstü uygulamaları için OAuth 2.0 akışını kullanın. (Uygulamanız grafik arayüzü olmayan bir komut satırı aracı olsa bile bu akışı kullanmalısınız.)

Kullanıcıların oturumunu yalnızca Google Hesaplarıyla oturum açmak ve temel kullanıcı profili bilgilerini almak için JWT kimlik jetonu kullanmak istiyorsanız TV'lerde ve Sınırlı Giriş Cihazlarında oturum açma başlıklı makaleyi inceleyin.

Ön koşullar

Projeniz için API'leri etkinleştirin

Google API'lerini çağıran uygulamaların, bu API'leri API Consoleuygulamasında etkinleştirmesi gerekir.

Projenizde bir API'yi etkinleştirmek için:

  1. Open the API Library Google API Console.
  2. If prompted, select a project, or create a new one.
  3. YouTube Data API'yi bulup etkinleştirmek için Kitaplık sayfasını kullanın. Uygulamanızın kullanacağı diğer API'leri bulun ve bunları da etkinleştirin.

Yetkilendirme kimlik bilgileri oluşturma

Google API'lerine erişmek için OAuth 2.0 kullanan tüm uygulamaların, uygulamayı Google'ın OAuth 2.0 sunucusuna tanımlayan yetkilendirme kimlik bilgilerine sahip olması gerekir. Aşağıdaki adımlarda, projeniz için nasıl kimlik bilgileri oluşturacağınız açıklanmaktadır. Ardından uygulamalarınız bu projede etkinleştirdiğiniz API'lere erişmek için kimlik bilgilerini kullanabilir.

  1. Go to the Credentials page.
  2. Kimlik bilgisi oluştur > OAuth istemci kimliği seçeneğini tıklayın.
  3. TV'ler ve Sınırlı Giriş cihazları uygulama türünü seçin.
  4. OAuth 2.0 istemcinizi adlandırın ve Oluştur'u tıklayın.

Erişim kapsamlarını tanımlama

Kapsamlar, uygulamanızın yalnızca ihtiyaç duyduğu kaynaklara erişim isteğinde bulunmasını sağlarken kullanıcıların da uygulamanıza verdikleri erişim miktarını kontrol etmesine olanak tanır. Dolayısıyla, talep edilen kapsam sayısı ile kullanıcı izni alma olasılığı arasında ters bir ilişki olabilir.

OAuth 2.0 yetkilendirmesini uygulamaya başlamadan önce uygulamanızın erişmek için izne ihtiyaç duyacağı kapsamları belirlemenizi öneririz.

YouTube Data API v3'te aşağıdaki kapsamlar kullanılır:

Nişan dürbünleri
https://www.googleapis.com/auth/youtubeYouTube hesabınızı yönetin
https://www.googleapis.com/auth/youtube.channel-memberships.creatorMevcut etkin kanal üyelerinizin listesini, geçerli düzeylerini ve ne zaman üye olduklarını görme
https://www.googleapis.com/auth/youtube.force-sslYouTube videolarınızı, derecelendirmelerinizi, yorumlarınızı ve altyazılarınızı görün, düzenleyin ve kalıcı olarak silin
https://www.googleapis.com/auth/youtube.readonlyYouTube hesabınızı görüntüleyin
https://www.googleapis.com/auth/youtube.uploadYouTube videolarınızı yönetin
https://www.googleapis.com/auth/youtubepartnerYouTube'daki varlıklarınızı ve ilişkili içeriği görüntüleyin ve yönetin
https://www.googleapis.com/auth/youtubepartner-channel-auditBir YouTube iş ortağı ile denetim süreci sırasında alakalı olan, YouTube kanalınıza ait gizli bilgileri görüntüleyin

Yüklü uygulamalar veya cihazlar için İzin verilen kapsamlar listesine bakın.

OAuth 2.0 erişim jetonları alma

Uygulamanız sınırlı giriş özelliklerine sahip bir cihazda çalışıyor olsa da, bu yetkilendirme akışını tamamlamak için kullanıcıların daha zengin giriş özelliklerine sahip bir cihaza ayrı erişimlerinin olması gerekir. Akışta aşağıdaki adımlar bulunur:

  1. Uygulamanız, Google'ın yetkilendirme sunucusuna, uygulamanızın erişim izni isteyeceği kapsamları tanımlayan bir istek gönderir.
  2. Sunucu, sonraki adımlarda kullanılan cihaz kodu ve kullanıcı kodu gibi çeşitli bilgilerle yanıt verir.
  3. Kullanıcının uygulamanızı yetkilendirmek için ayrı bir cihazda girebileceği bilgileri görüntülersiniz.
  4. Uygulamanız, kullanıcının uygulamanızı yetkilendirip yetkilendirdiğini belirlemek için Google'ın yetkilendirme sunucusunu yoklamaya başlar.
  5. Kullanıcı daha zengin giriş özelliklerine sahip bir cihaza geçer, bir web tarayıcısını başlatır, 3. adımda görüntülenen URL'ye gider ve yine 3. adımda gösterilen bir kod girer. Daha sonra kullanıcı uygulamanıza erişim izni verebilir (veya erişimi reddedebilir).
  6. Yoklama isteğinize verilen bir sonraki yanıt, uygulamanızın kullanıcı adına istekleri yetkilendirmesi için gereken jetonları içerir. (Kullanıcı uygulamanıza erişimi reddettiyse yanıtta jeton bulunmaz.)

Aşağıdaki resimde bu işlem gösterilmektedir:

Kullanıcı, tarayıcısı olan ayrı bir cihazda giriş yapar

Aşağıdaki bölümlerde bu adımlar ayrıntılı olarak açıklanmaktadır. Cihazların sahip olabileceği farklı özellikler ve çalışma zamanı ortamları göz önünde bulundurulduğunda, bu belgede gösterilen örneklerde curl komut satırı yardımcı programı kullanılmaktadır. Bu örneklerin çeşitli dillere ve çalışma zamanlarına kolayca taşınabilmesi gerekir.

1. adım: Cihaz ve kullanıcı kodlarını isteyin

Cihazınız bu adımda Google'ın https://oauth2.googleapis.com/device/code adresindeki yetkilendirme sunucusuna bir HTTP POST isteği gönderir. Bu istek, uygulamanızın ve kullanıcı adına erişmek istediği erişim kapsamlarının tanımlanmasını sağlar. Bu URL'yi Keşif dokümanından, device_authorization_endpoint meta veri değerini kullanarak almanız gerekir. Aşağıdaki HTTP isteği parametrelerini ekleyin:

Parametreler
client_id Zorunlu

Uygulamanızın istemci kimliği. Bu değeri API Console Credentials pageiçinde bulabilirsiniz.

scope Zorunlu

Uygulamanızın kullanıcı adına erişebileceği kaynakları tanımlayan, boşlukla sınırlandırılmış bir kapsam listesi. Bu değerler, Google'ın kullanıcıya gösterdiği izin ekranını bilgilendirir. Yüklü uygulamalar veya cihazlar için İzin verilen kapsamlar listesine bakın.

Kapsamlar, uygulamanızın yalnızca ihtiyaç duyduğu kaynaklara erişim isteğinde bulunmasına ve kullanıcıların uygulamanıza verdikleri erişim miktarını kontrol etmesine olanak tanır. Dolayısıyla, talep edilen kapsam sayısı ile kullanıcı izni alma olasılığı arasında ters bir ilişki vardır.

YouTube Data API v3'te aşağıdaki kapsamlar kullanılır:

Nişan dürbünleri
https://www.googleapis.com/auth/youtubeYouTube hesabınızı yönetin
https://www.googleapis.com/auth/youtube.channel-memberships.creatorMevcut etkin kanal üyelerinizin listesini, geçerli düzeylerini ve ne zaman üye olduklarını görme
https://www.googleapis.com/auth/youtube.force-sslYouTube videolarınızı, derecelendirmelerinizi, yorumlarınızı ve altyazılarınızı görün, düzenleyin ve kalıcı olarak silin
https://www.googleapis.com/auth/youtube.readonlyYouTube hesabınızı görüntüleyin
https://www.googleapis.com/auth/youtube.uploadYouTube videolarınızı yönetin
https://www.googleapis.com/auth/youtubepartnerYouTube'daki varlıklarınızı ve ilişkili içeriği görüntüleyin ve yönetin
https://www.googleapis.com/auth/youtubepartner-channel-auditBir YouTube iş ortağı ile denetim süreci sırasında alakalı olan, YouTube kanalınıza ait gizli bilgileri görüntüleyin

OAuth 2.0 API Kapsamları belgesi, Google API'lerine erişmek için kullanabileceğiniz kapsamların tam listesini sağlar.

Örnekler

Aşağıdaki snippet'te örnek bir istek gösterilmektedir:

POST /device/code HTTP/1.1
Host: oauth2.googleapis.com
Content-Type: application/x-www-form-urlencoded

client_id=client_id&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fyoutube.force-ssl

Bu örnekte, aynı isteği göndermek için kullanılan bir curl komutu gösterilmektedir:

curl -d "client_id=client_id&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fyoutube.force-ssl" \
     https://oauth2.googleapis.com/device/code

2. Adım: Yetkilendirme sunucusu yanıtını işleme

Yetkilendirme sunucusu aşağıdaki yanıtlardan birini döndürür:

Başarılı yanıt

İstek geçerliyse yanıtınız aşağıdaki özellikleri içeren bir JSON nesnesi olur:

Özellikler
device_code Yetkilendirme isteğinde bulunan uygulamayı çalıştıran cihazı tanımlamak için Google'ın benzersiz şekilde atadığı bir değerdir. Kullanıcı bu cihaza, daha kapsamlı giriş özelliklerine sahip başka bir cihazdan yetki verir. Örneğin, bir kullanıcı TV'de çalışan bir uygulamayı yetkilendirmek için dizüstü bilgisayar veya cep telefonu kullanabilir. Bu durumda, device_code TV'yi tanımlar.

Bu kod, uygulamayı çalıştıran cihazın, kullanıcının erişim izni verip vermediğini güvenli bir şekilde belirlemesini sağlar.

expires_in device_code ve user_code öğelerinin geçerli olduğu saniye cinsinden süre. Bu süre içinde kullanıcı yetkilendirme akışını tamamlamaz ve cihazınız da kullanıcının kararıyla ilgili bilgi almak için anket yapmazsa bu işlemi 1. adımdan yeniden başlatmanız gerekebilir.
interval Cihazınızın yoklama istekleri arasında beklemesi gereken saniye cinsinden süre. Örneğin, değer 5 ise cihazınız Google'ın yetkilendirme sunucusuna her beş saniyede bir yoklama isteği göndermelidir. Daha fazla ayrıntı için 3. adıma bakın.
user_code Google'ın, uygulamanın erişim istediği kapsamları tanımlayan büyük/küçük harfe duyarlı bir değerdir. Kullanıcı arayüzünüz, kullanıcıdan bu değeri daha zengin giriş özelliklerine sahip ayrı bir cihazda girmesini ister. Daha sonra Google, kullanıcıdan uygulamanıza erişim izni isterken bu değeri kullanarak doğru kapsam grubunu gösterir.
verification_url user_code öğesini girmek ve uygulamanıza erişim izni vermek veya erişimi reddetmek için kullanıcının ayrı bir cihazda gitmesi gereken URL. Bu değer, kullanıcı arayüzünüz de gösterilir.

Aşağıdaki snippet örnek bir yanıt gösterir:

{
  "device_code": "4/4-GMMhmHCXhWEzkobqIHGG_EnNYYsAkukHspeYUk9E8",
  "user_code": "GQVQ-JKEC",
  "verification_url": "https://www.google.com/device",
  "expires_in": 1800,
  "interval": 5
}

Kota aşıldı yanıtı

Cihaz kodu istekleriniz, istemci kimliğinizle ilişkili kotayı aştıysa aşağıdaki hatayı içeren bir 403 yanıtı alırsınız:

{
  "error_code": "rate_limit_exceeded"
}

Bu durumda, isteklerin oranını azaltmak için bir geri çekme stratejisi kullanın.

3. Adım: Kullanıcı kodunu görüntüleyin

2. adımda elde ettiğiniz verification_url ve user_code değerlerini kullanıcıya gösterin. Her iki değer de US-ASCII karakter kümesinden yazdırılabilir herhangi bir karakter içerebilir. Kullanıcıya gösterdiğiniz içerik, kullanıcıya ayrı bir cihazda verification_url bölümüne gidip user_code öğesini girmesini söylemelidir.

Kullanıcı arayüzünüzü tasarlarken aşağıdaki kuralları göz önünde bulundurun:

  • user_code
    • user_code, 15 "W" boyutunda karakteri işleyebilen bir alanda görüntülenmelidir. Başka bir deyişle, WWWWWWWWWWWWWWW kodunu doğru bir şekilde görüntüleyebiliyorsanız kullanıcı arayüzünüz geçerli demektir ve user_code kodunun kullanıcı arayüzünde görüntülenme biçimini test ederken bu dize değerini kullanmanızı öneririz.
    • user_code, büyük/küçük harfe duyarlıdır ve hiçbir şekilde (büyük/küçük harf değiştirmek ya da başka biçimlendirme karakterleri eklemek gibi) değiştirilmemelidir.
  • verification_url
    • verification_url öğesini görüntülediğiniz alan, 40 karakter uzunluğundaki bir URL dizesini işleyecek kadar geniş olmalıdır.
    • verification_url öğesini, isteğe bağlı olarak görüntüleme şemasını kaldırmak dışında hiçbir şekilde değiştirmemelisiniz. Görünen nedenlerle URL'den şemayı (ör. https://) çıkarmayı planlıyorsanız uygulamanızın hem http hem de https varyantını işleyebildiğinden emin olun.

4. Adım: Google'ın yetkilendirme sunucusunda anket yapın

Kullanıcı, verification_url uygulamasına gitmek ve erişim izni vermek (ya da erişimi reddetmek) için ayrı bir cihaz kullanacağı için erişim isteğine yanıt verildiğinde istekte bulunan cihaza otomatik olarak bildirim gönderilmez. Bu nedenle, istekte bulunan cihazın, kullanıcının isteğe ne zaman yanıt verdiğini belirlemek için Google'ın yetkilendirme sunucusunu yoklaması gerekir.

İstekte bulunan cihaz, kullanıcının erişim isteğine yanıt verdiğini belirten bir yanıt alana veya 2. adımda elde edilen device_code ve user_code öğelerinin süresi dolana kadar yoklama istekleri göndermeye devam etmelidir. 2. adımda döndürülen interval, istekler arasında beklenecek süreyi saniye cinsinden belirtir.

Anket uç noktasının URL'si: https://oauth2.googleapis.com/token. Yoklama isteği aşağıdaki parametreleri içerir:

Parametreler
client_id Uygulamanızın istemci kimliği. Bu değeri API Console Credentials pageiçinde bulabilirsiniz.
client_secret Sağlanan client_id için istemci gizli anahtarı. Bu değeri API Console Credentials pageiçinde bulabilirsiniz.
device_code 2. adımda yetkilendirme sunucusu tarafından döndürülen device_code.
grant_type Bu değeri urn:ietf:params:oauth:grant-type:device_code olarak ayarlayın.

Örnekler

Aşağıdaki snippet'te örnek bir istek gösterilmektedir:

POST /token HTTP/1.1
Host: oauth2.googleapis.com
Content-Type: application/x-www-form-urlencoded

client_id=client_id&
client_secret=client_secret&
device_code=device_code&
grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Adevice_code

Bu örnekte, aynı isteği göndermek için kullanılan bir curl komutu gösterilmektedir:

curl -d "client_id=client_id&client_secret=client_secret& \
         device_code=device_code& \
         grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Adevice_code" \
         -H "Content-Type: application/x-www-form-urlencoded" \
         https://oauth2.googleapis.com/token

5. Adım: Kullanıcı, erişim isteğine yanıt verir

Aşağıdaki resimde, kullanıcıların 3. adımda görüntülediğiniz verification_url için yaptıklarına benzer bir sayfa gösterilmektedir:

Kod girerek bir cihaz bağlayın

user_code girdikten sonra kullanıcı, giriş yapmamışsa Google'a giriş yaptığında aşağıda gösterilene benzer bir izin ekranı görür:

Bir cihaz istemcisi için örnek izin ekranı

6. adım: Yoklama isteklerine verilen yanıtları işleme

Google'ın yetkilendirme sunucusu her yoklama isteğine aşağıdaki yanıtlardan biriyle yanıt verir:

Erişim izni verildi

Kullanıcı cihaza erişim izni verdiyse (izin ekranında Allow simgesini tıklayarak) yanıt bir erişim jetonu ve yenileme jetonu içerir. Jetonlar, cihazınızın kullanıcı adına Google API'lerine erişmesine olanak tanır. (Yanıttaki scope özelliği, cihazın hangi API'lere erişebileceğini belirler.)

Bu durumda, API yanıtı aşağıdaki alanları içerir:

Alanlar
access_token Uygulamanızın bir Google API isteğini yetkilendirmek için gönderdiği jeton.
expires_in Erişim jetonunun saniye cinsinden kalan ömrü.
refresh_token Yeni bir erişim jetonu almak için kullanabileceğiniz jeton. Yenileme jetonları, kullanıcı erişimi iptal edene kadar geçerlidir. Cihazlar için yenileme jetonlarının her zaman döndürüldüğünü unutmayın.
scope access_token tarafından verilen erişim kapsamları, boşlukla sınırlandırılmış, büyük/küçük harfe duyarlı dizelerin bir listesi olarak ifade edilir.
token_type Döndürülen jetonun türü. Şu anda bu alanın değeri her zaman Bearer olarak ayarlanmıştır.

Aşağıdaki snippet örnek bir yanıt gösterir:

{
  "access_token": "1/fFAGRNJru1FTz70BzhT3Zg",
  "expires_in": 3920,
  "scope": "openid https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email",
  "token_type": "Bearer",
  "refresh_token": "1/xEoDL4iW3cxlI7yDbSRFYNG01kVKM2C-259HOF2aQbI"
}

Erişim jetonlarının ömrü sınırlıdır. Uygulamanızın uzun süredir bir API'ye erişmesi gerekiyorsa uygulama, yeni bir erişim jetonu almak için yenileme jetonunu kullanabilir. Uygulamanız bu tür bir erişime ihtiyaç duyuyorsa yenileme jetonunu daha sonra kullanmak üzere depolamalıdır.

Erişim engellendi

Kullanıcı cihaza erişim izni vermeyi reddederse sunucu yanıtı 403 HTTP yanıt durum kodu (Forbidden) olur. Yanıt şu hatayı içerir:

{
  "error": "access_denied",
  "error_description": "Forbidden"
}

Yetkilendirme bekleniyor

Kullanıcı yetkilendirme akışını henüz tamamlamadıysa sunucu bir 428 HTTP yanıt durum kodu (Precondition Required) döndürür. Yanıt şu hatayı içerir:

{
  "error": "authorization_pending",
  "error_description": "Precondition Required"
}

Çok sık anket yapılıyor

Cihaz, yoklama isteklerini çok sık gönderirse sunucu bir 403 HTTP yanıt durum kodu (Forbidden) döndürür. Yanıt, aşağıdaki hatayı içerir:

{
  "error": "slow_down",
  "error_description": "Forbidden"
}

Diğer hatalar

Yetkilendirme sunucusu, yoklama isteğinde gerekli parametrelerden biri eksikse veya parametre değeri yanlışsa da hata döndürür. Bu isteklerin genellikle 400 (Bad Request) veya 401 (Unauthorized) HTTP yanıt durum kodu olur. Bu hatalar şunlardır:

Hata HTTP Durum Kodu Açıklama
admin_policy_enforced 400 Google Hesabı, Google Workspace yöneticisinin politikaları nedeniyle istenen bir veya daha fazla kapsamı yetkilendiremedi. Bir yöneticinin, OAuth istemci kimliğinize açıkça erişim verilene kadar kapsamlara erişimi nasıl kısıtlayabileceği hakkında daha fazla bilgi için Google Workspace verilerine hangi üçüncü taraf uygulamalarının ve dahili uygulamaların erişebileceğini yönetme başlıklı Google Workspace Yöneticisi yardım makalesine göz atın.
invalid_client 401

OAuth istemcisi bulunamadı. Örneğin, bu hata client_id parametre değeri geçersizse ortaya çıkar.

OAuth istemci türü yanlış. İstemci kimliği için uygulama türünün TV'ler ve Sınırlı Giriş cihazları olarak ayarlandığından emin olun.

invalid_grant 400 code parametre değeri geçersiz, değer zaten hak talebinde bulunulmuş veya ayrıştırılamıyor.
unsupported_grant_type 400 grant_type parametre değeri geçersiz.
org_internal 403 İstekteki OAuth istemci kimliği, belirli bir Google Cloud kuruluşundaki Google Hesaplarına erişimi sınırlayan bir projenin parçası. OAuth uygulamanız için kullanıcı türü yapılandırmasını onaylayın.

Google API'lerini çağırma

Uygulamanız bir erişim jetonu aldıktan sonra, API'nin ihtiyaç duyduğu erişim kapsamları verildiyse bu jetonu belirli bir kullanıcı hesabı adına Google API'ye çağrı yapmak için kullanabilirsiniz. Bunu yapmak için bir access_token sorgu parametresi veya Authorization HTTP başlığı Bearer değeri ekleyerek API'ye yapılan bir isteğe erişim jetonunu dahil edin. Sorgu dizeleri, sunucu günlüklerinde genellikle görünür olduğundan, mümkünse HTTP üst bilgisi tercih edilir. Çoğu durumda, Google API'lerine yapılan çağrılarınızı ayarlamak için istemci kitaplığı kullanabilirsiniz (ör. YouTube Live Streaming API'yi çağırırken).

YouTube Live Streaming API, hizmet hesabı akışını desteklemez. Hizmet hesabını YouTube hesabına bağlamanın bir yolu olmadığından, istekleri bu akışla yetkilendirmeye çalışıldığında NoLinkedYouTubeAccount hatası oluşur.

Tüm Google API'lerini deneyebilir ve OAuth 2.0 Playground'da kapsamlarını görüntüleyebilirsiniz.

HTTP GET örnekleri

Authorization: Bearer HTTP üst bilgisi kullanılarak liveBroadcasts.list uç noktasına (YouTube Live Streaming API) yapılan çağrı aşağıdaki gibi görünebilir. Kendi erişim jetonunuzu belirtmeniz gerektiğini unutmayın:

GET /youtube/v3/liveBroadcasts?part=id%2Csnippet&mine=true HTTP/1.1
Host: www.googleapis.com
Authorization: Bearer access_token

Aşağıda, access_token sorgu dizesi parametresini kullanarak kimliği doğrulanmış kullanıcı için aynı API'ye yapılan bir çağrıyı görebilirsiniz:

GET https://www.googleapis.com/youtube/v3/liveBroadcasts?access_token=access_token&part=id%2Csnippet&mine=true

curl örnekleri

Bu komutları curl komut satırı uygulamasıyla test edebilirsiniz. HTTP üstbilgisi seçeneğini kullanan bir örneği burada bulabilirsiniz (tercih edilen):

curl -H "Authorization: Bearer access_token" https://www.googleapis.com/youtube/v3/liveBroadcasts?part=id%2Csnippet&mine=true

Alternatif olarak, sorgu dizesi parametre seçeneği şu şekildedir:

curl https://www.googleapis.com/youtube/v3/liveBroadcasts?access_token=access_token&part=id%2Csnippet&mine=true

Erişim jetonunu yenileme

Erişim jetonlarının süresi belirli aralıklarla sona erer ve ilgili API isteği için geçersiz kimlik bilgileri haline gelir. Jetonla ilişkili kapsamlara çevrimdışı erişim isteğinde bulunduysanız erişim jetonunu kullanıcıdan izin istemeden (kullanıcının mevcut olmadığı zamanlar dahil) yenileyebilirsiniz.

Uygulamanız, bir erişim jetonunu yenilemek için Google'ın yetkilendirme sunucusuna (https://oauth2.googleapis.com/token) aşağıdaki parametreleri içeren bir HTTPS POST isteği gönderir:

Alanlar
client_id API Consoleöğesinden alınan istemci kimliği.
client_secret API Consoleöğesinden alınan istemci gizli anahtarı.
grant_type OAuth 2.0 spesifikasyonunda tanımlandığı gibi, bu alanın değeri refresh_token olarak ayarlanmalıdır.
refresh_token Yetkilendirme kodu exchange'inden döndürülen yenileme jetonu.

Aşağıdaki snippet'te örnek bir istek gösterilmektedir:

POST /token HTTP/1.1
Host: oauth2.googleapis.com
Content-Type: application/x-www-form-urlencoded

client_id=your_client_id&
client_secret=your_client_secret&
refresh_token=refresh_token&
grant_type=refresh_token

Kullanıcı, uygulamaya verilen erişimi iptal etmediği sürece jeton sunucusu, yeni bir erişim jetonu içeren bir JSON nesnesi döndürür. Aşağıdaki snippet'te örnek bir yanıt gösterilmektedir:

{
  "access_token": "1/fFAGRNJru1FTz70BzhT3Zg",
  "expires_in": 3920,
  "scope": "https://www.googleapis.com/auth/drive.metadata.readonly",
  "token_type": "Bearer"
}

Verilecek yenileme jetonlarının sayısının sınırlı olduğunu unutmayın. Bunlar, tüm istemcilerde istemci/kullanıcı kombinasyonu başına bir ve kullanıcı başına başka bir sınırdır. Yenileme jetonlarını uzun süreli depolama alanına kaydetmeniz ve geçerli kaldıkları sürece kullanmaya devam etmeniz gerekir. Uygulamanız çok fazla yenileme jetonu isterse bu sınırlarla karşılaşabilir. Bu durumda, eski yenileme jetonları çalışmayı durdurur.

Jetonu iptal etme

Bazı durumlarda, bir kullanıcı bir uygulamaya verilen erişimi iptal etmek isteyebilir. Kullanıcı, Hesap Ayarları'na giderek erişimi iptal edebilir. Daha fazla bilgi için destek dokümanında, Hesabınıza erişimi olan üçüncü taraf siteler ve uygulamaların site veya uygulama erişimini kaldırma bölümüne bakın.

Bir uygulamanın, kendisine verilen erişimi programlı olarak iptal etmesi de mümkündür. Kullanıcının abonelikten çıktığı, bir uygulamayı kaldırdığı veya bir uygulamanın gerektirdiği API kaynaklarının önemli ölçüde değiştiği durumlarda programlı iptal önemlidir. Diğer bir deyişle, kaldırma sürecinin bir bölümü, uygulamaya daha önce verilmiş izinlerin kaldırıldığından emin olmak için bir API isteğini içerebilir.

Uygulamanız, bir jetonu programlı bir şekilde iptal etmek için https://oauth2.googleapis.com/revoke kaynağına istek gönderir ve jetonu parametre olarak ekler:

curl -d -X -POST --header "Content-type:application/x-www-form-urlencoded" \
        https://oauth2.googleapis.com/revoke?token={token}

Bu jeton bir erişim jetonu veya yenileme jetonu olabilir. Jeton bir erişim jetonuysa ve buna karşılık gelen bir yenileme jetonu varsa yenileme jetonu da iptal edilir.

İptal başarıyla işlenirse yanıtın HTTP durum kodu 200 olur. Hata koşulları için hata koduyla birlikte 400 HTTP durum kodu döndürülür.

İzin verilen kapsamlar

Cihazlar için OAuth 2.0 akışı yalnızca şu kapsamlar için desteklenir:

RFC Connect, Google ile Oturum Açma

  • email
  • openid
  • profile

Drive API

  • https://www.googleapis.com/auth/drive.appdata
  • https://www.googleapis.com/auth/drive.file

YouTube API'si

  • https://www.googleapis.com/auth/youtube
  • https://www.googleapis.com/auth/youtube.readonly