TV ve Sınırlı Girişli Cihaz Uygulamaları için OAuth 2.0

2 adet önemli 2 adet önemli alt desteği yaklaşık 2 adet

Bu dokümanda, TV'ler, oyun konsolları ve yazıcılar gibi cihazlarda çalışan uygulamalar aracılığıyla Google API'lerine erişmek için OAuth 2.0 yetkilendirmesinin nasıl uygulanacağı açıklanmaktadır. Daha ayrıntılı olarak açıklamak 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 kullanıcıların belirli verileri bir uygulamayla paylaşmasına olanak tanır. Örneğin, bir TV uygulaması, Google Drive'da depolanan bir dosyayı seçmek üzere izin 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. Kullanıcılar, Google API'lerine kullanıcı uygulamadayken veya uygulama arka planda çalışırken erişebilir.

Alternatifler

Android, iOS, macOS, Linux veya Windows (Universal Windows Platformu dahil) gibi tarayıcıya ve tüm giriş özelliklerine sahip 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.)

Yalnızca kullanıcılarda Google hesaplarıyla oturum açmak ve temel kullanıcı profili bilgilerini edinmek için JWT kimlik jetonu kullanmak istiyorsanız TV'lerde ve Sınırlı Giriş Cihazlarında Oturum Açma konusuna bakın.

Ön koşullar

Projeniz için API'leri etkinleştirin

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

Projeniz için bir API'yi etkinleştirmek üzere:

  1. Open the API Library Google API Consoleiçinde gösteriliyor.
  2. If prompted, select a project, or create a new one.
  3. API Library sütununda, ürün ailesine ve popülerliğe göre gruplandırılmış tüm API'ler listelenir. Etkinleştirmek istediğiniz API listede görünmüyorsa bulmak için aramayı kullanın veya ait olduğu ürün ailesinde Tümünü Görüntüle'yi tıklayın.
  4. Etkinleştirmek istediğiniz API'yi seçip Etkinleştir düğmesini tıklayın.
  5. If prompted, enable billing.
  6. If prompted, read and accept the API's Terms of Service.

Yetkilendirme kimlik bilgileri oluştur

Google API'lerine erişmek için OAuth 2.0 kullanan tüm uygulamalar, uygulamayı Google'ın OAuth 2.0 sunucusuna tanımlayan yetkilendirme kimlik bilgilerine sahip olmalıdır. Aşağıdaki adımlarda projeniz için nasıl kimlik bilgisi oluşturacağınız açıklanmaktadır. Daha sonra uygulamalarınız söz konusu proje için 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ı belirleme

Kapsamlar, uygulamanızın yalnızca ihtiyaç duyduğu kaynaklara erişim istemesine olanak tanırken kullanıcıların uygulamanıza verdikleri erişim miktarını da kontrol edebilmesini sağlar. Dolayısıyla, istenen kapsamların sayısı ile kullanıcıdan izin alma olasılığı arasında ters bir ilişki olabilir.

OAuth 2.0 yetkilendirmesini uygulamaya başlamadan önce, uygulamanızın erişim için izin alması gereken kapsamları belirlemenizi öneririz.

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

OAuth 2.0 erişim jetonları edinme

Uygulamanız sınırlı giriş özelliklerine sahip bir cihazda çalışsa da bu yetkilendirme akışını tamamlamak için kullanıcıların daha zengin giriş özelliklerine sahip bir cihaza ayrı olarak erişmesi gerekir. Akış aşağıdaki adımlardan oluşur:

  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 cihaza girebileceği bilgileri gösterirsiniz.
  4. Uygulamanız, kullanıcının uygulamanızı yetkilendirip yetkilendirmediğini belirlemek için Google'ın yetkilendirme sunucusunu yoklamaya başlar.
  5. Kullanıcı, daha zengin giriş özelliklerine sahip bir cihaza geçiş yapar, bir web tarayıcısı başlatır, 3. adımda gösterilen URL'ye gider ve 3. adımda da gösterilen bir kod girer. Kullanıcı, daha sonra uygulamanıza erişim izni verebilir (veya erişimi reddedebilir).
  6. Oylama isteğinize verilen bir sonraki yanıtta, uygulamanızın kullanıcı adına istekleri yetkilendirmesi için gereken jetonlar yer alır. (Kullanıcı uygulamanıza erişimi reddettiyse yanıtta jeton bulunmaz.)

Aşağıdaki resimde bu süreç 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 işlev yelpazesi ve çalışma zamanı ortamları göz önünde bulundurulduğunda bu dokümanda gösterilen örneklerde curl komut satırı yardımcı programı kullanılmıştır. Bu örneklerin çeşitli dillere ve çalışma zamanlarına kolayca taşınması gerekir.

1. Adım: Cihaz ve kullanıcı kodları isteyin

Bu adımda cihazınız Google'ın https://oauth2.googleapis.com/device/code adresindeki yetkilendirme sunucusuna uygulamanızı ve uygulamanızın kullanıcı adına erişmek istediği erişim kapsamlarını tanımlayan bir HTTP POST isteği gönderir. Bu URL'yi device_authorization_endpoint meta veri değerini kullanarak Discovery belgesinden almanız gerekir. Aşağıdaki HTTP istek parametrelerini dahil edin:

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 listesidir. 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 istemesine olanak tanırken kullanıcıların uygulamanıza verdikleri erişim miktarını da kontrol edebilmesini sağlar. Bu nedenle, istenen kapsam sayısı ile kullanıcıdan izin alma olasılığı arasında ters bir ilişki vardır.

Ö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=email%20profile

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

curl -d "client_id=client_id&scope=email%20profile" \
     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ı yanıtı

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

Özellikler
device_code Yetkilendirme isteyen uygulamayı çalıştıran cihazı tanımlamak için Google'ın benzersiz bir şekilde atadığı değerdir. Kullanıcı, bu cihaza daha zengin giriş özelliklerine sahip başka bir cihazdan yetki verecek. Örneğin, bir kullanıcı TV'de çalışan bir uygulamayı yetkilendirmek için dizüstü bilgisayar veya cep telefonunu kullanabilir. Bu örnekte, 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 belirlemesine olanak tanır.

expires_in device_code ve user_code değerlerinin saniye cinsinden geçerli olduğu süre. Bu süre zarfında kullanıcı yetkilendirme akışını tamamlamaz ve cihazınız kullanıcının kararıyla ilgili bilgileri almak için yoklama 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 her beş saniyede bir Google'ın yetkilendirme sunucusuna bir yoklama isteği göndermelidir. Daha ayrıntılı bilgi için 3. adıma bakın.
user_code Google'a 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. Google, daha sonra kullanıcıdan uygulamanıza erişim izni vermesini isterken bu değeri doğru kapsam grubunu göstermek için kullanır.
verification_url Kullanıcının user_code adresini girmek ve uygulamanıza erişim izni vermek veya erişimi reddetmek için ayrı bir cihazda gitmesi gereken URL. Kullanıcı arayüzünde de bu değer gösterilir.

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

{
  "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şkilendirilen 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, istek oranını azaltmak için bir geri yükleme stratejisi kullanın.

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

2. adımda elde edilen 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 karakteri içerebilir. Kullanıcıya gösterdiğiniz içerik, kullanıcıdan ayrı bir cihazda verification_url uygulamasına gitmesini ve user_code kodunu girmesini istemelidir.

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

  • user_code
    • user_code, 15 "W" boyutlu karakteri işleyebilen bir alanda görüntülenmelidir. Yani WWWWWWWWWWWWWWW kodunu doğru şekilde görüntüleyebiliyorsanız kullanıcı arayüzünüz geçerli demektir. Bu durumda, user_code öğesinin kullanıcı arayüzünde görüntülenme şeklini test ederken bu dize değerini kullanmanızı öneririz.
    • user_code, büyük/küçük harfe duyarlıdır ve hiçbir şekilde değiştirilmemelidir (büyük/küçük harf kullanımı veya diğer biçimlendirme karakterleri ekleme gibi).
  • 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.
    • İsteğe bağlı olarak görüntüleme şemasını kaldırmak dışında verification_url üzerinde hiçbir şekilde değişiklik yapmamalısınız. Görüntüleme nedeniyle şemayı (ör. https://) URL'den çıkarmayı planlıyorsanız uygulamanızın hem http hem de https varyantlarını işleyebildiğinden emin olun.

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

Kullanıcı, verification_url uygulamasına gitmek ve erişim izni vermek (veya erişimi reddetmek) için ayrı bir cihaz kullanacağından, kullanıcı erişim isteğine yanıt verdiğinde istekte bulunan cihaza otomatik olarak bildirim gönderilmez. Bu nedenle, istekte bulunan cihazı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 kadar 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.

Ankete giden uç noktanı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 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 bölümüne geldiklerinde gördükleri sayfaya benzer bir sayfa gösterilmektedir:

Kod girerek cihaz bağlayın

user_code girildikten ve önceden giriş yapılmamışsa Google'a giriş yapan kullanıcılar aşağıdakine benzer bir izin ekranı görür:

Cihaz istemcisi için örnek izin ekranı

6. Adım: Sorgulama 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 öğesini tıklayarak) yanıt, erişim jetonu ve yenileme jetonu içerir. Jetonlar, cihazınızın kullanıcı adına Google API'lerine erişmesini sağlar. (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 kalan ömrü (saniye cinsinden).
refresh_token Yeni bir erişim jetonu almak için kullanabileceğiniz bir 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ı dizelerden oluşan bir liste 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'te örnek bir yanıt gösterilmektedir:

{
  "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 kullanım ömrü sınırlıdır. Uygulamanızın uzun süredir bir API'ye erişmesi gerekiyorsa 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ında 403 HTTP yanıt durum kodu (Forbidden) olur. Yanıtta aşağıdaki hata yer alır:

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

Yetkilendirme beklemede

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 aşağıdaki hatayı içerir:

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

Çok sık anket yapıyorum

Cihaz, anket 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 herhangi biri eksikse veya yanlış parametre değerine sahipse de hata döndürür. Bu istekler genellikle 400 (Bad Request) veya 401 (Unauthorized) HTTP yanıt durum koduna sahiptir. 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ı yetkilendiremiyor. OAuth istemci kimliğinize erişim açıkça verilene kadar yöneticilerin kapsamlara erişimi nasıl kısıtlayabileceği hakkında daha fazla bilgi için Google Workspace verilerine hangi üçüncü taraf uygulamalar 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 meydana gelir.

OAuth istemci türü yanlıştır. İ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, 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ıdır. OAuth uygulamanızın 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 gerektirdiği erişim kapsamları verilmişse bu jetonu belirli bir kullanıcı hesabı adına bir Google API'ye çağrı yapmak için kullanabilirsiniz. Bunu yapmak için access_token sorgu parametresi veya Authorization HTTP üst bilgisi Bearer değeri ekleyerek API'ye yapılan bir isteğe erişim jetonunu ekleyin. Sorgu dizeleri sunucu günlüklerinde görünür olduğundan mümkün olduğunda HTTP üst bilgisi tercih edilir. Çoğu durumda (örneğin, Drive Files API'yi çağırırken) Google API'lerine yönelik çağrılarınızı ayarlamak için bir istemci kitaplığı kullanabilirsiniz.

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

HTTP GET örnekleri

Authorization: Bearer HTTP üst bilgisini kullanarak drive.files uç noktasına (Drive Files API) yapılan bir çağrı aşağıdaki gibi görünebilir. Kendi erişim jetonunuzu belirtmeniz gerektiğini unutmayın:

GET /drive/v2/files HTTP/1.1
Host: www.googleapis.com
Authorization: Bearer access_token

Burada, access_token sorgu dizesi parametresini kullanan kimliği doğrulanmış kullanıcı için aynı API'ye yapılan bir çağrı gösterilmektedir:

GET https://www.googleapis.com/drive/v2/files?access_token=access_token

curl örnekleri

Bu komutları curl komut satırı uygulamasıyla test edebilirsiniz. HTTP başlığı seçeneğinin kullanıldığı bir örneği aşağıda bulabilirsiniz (tercih edilen):

curl -H "Authorization: Bearer access_token" https://www.googleapis.com/drive/v2/files

Alternatif olarak sorgu dizesi parametresi seçeneğinden de yararlanabilirsiniz:

curl https://www.googleapis.com/drive/v2/files?access_token=access_token

Erişim jetonunu yenileme

Erişim jetonlarının süresi belirli aralıklarla dolar ve ilgili API isteği için geçersiz kimlik bilgileri haline gelir. Bir erişim jetonunu, jetonla ilişkili kapsamlara çevrimdışı erişim isteğinde bulunduysanız kullanıcıdan izin istemeden (kullanıcının bulunmadığı durumlar 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 Consolecihazından 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 değişiminden 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ıyla ilgili sınırlar olduğunu unutmayın. Bu sınırlar istemci/kullanıcı kombinasyonu başına bir sınır ve tüm istemcilerde kullanıcı başına bir sınırdır. Yenileme jetonlarını uzun süreli depolama alanına kaydetmeniz ve geçerli oldukları 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 kullanıcı, bir uygulamaya verilen erişimi iptal etmek isteyebilir. Kullanıcı, Hesap Ayarları sayfasını ziyaret ederek erişimi iptal edebilir. Daha fazla bilgi için Hesabınıza erişimi olan üçüncü taraf site ve uygulamaların Site veya uygulama erişimini kaldırma başlıklı destek belgesini inceleyin.

Ayrıca bir uygulama, kendisine verilen erişimi programlı olarak iptal edebilir. Kullanıcının abonelikten çıktığı, uygulamayı kaldırdığı veya uygulamanın gerektirdiği API kaynaklarının önemli ölçüde değiştiği durumlarda programatik iptal önemlidir. Başka bir deyişle, kaldırma süreci kapsamında, uygulamaya daha önce verilmiş olan izinlerin kaldırıldığından emin olmak için bir API isteği gönderilebilir.

Uygulamanız, bir jetonu programlı olarak iptal etmek için https://oauth2.googleapis.com/revoke adresine 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, 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ında hata koduyla birlikte 400 HTTP durum kodu döndürülür.

İzin verilen kapsamlar

Cihazlar için OAuth 2.0 akışı yalnızca aşağıdaki kapsamlar için desteklenir:

OpenID Connect, Google ile Oturum Açma

  • email
  • openid
  • profile

Drive API'si

  • 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