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

şunları destekler:0 min7

Bu dokümanda, TV, oyun konsolu ve yazıcı 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ı 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çmek için izin almak üzere OAuth 2.0'ı kullanabilir.

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

Alternatifler

Android, iOS, macOS, Linux veya Windows (Evrensel Windows Platformu dahil) gibi tarayıcı erişimi ve tam 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ıların Google hesaplarıyla oturum açmasını 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 sayfasına göz atın.

Ön koşullar

Projeniz için API'leri etkinleştirin

Google API'lerini çağıran tüm 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 bölümünde, ü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 arama özelliğini 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şturma

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 bilgileri oluşturacağınız açıklanmaktadır. Daha sonra uygulamalarınız bu 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 isteğinde bulunmasına ve aynı zamanda kullanıcıların uygulamanıza verdikleri erişim miktarını kontrol etmesine olanak tanır. Bu nedenle, istenen kapsam 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şmesi için izin gerektirecek 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 bile, bu yetkilendirme akışını tamamlamak için kullanıcıların daha zengin giriş yeteneklerine sahip bir cihaza ayrı erişimi olmalıdır. 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ş yeteneklerine sahip bir cihaza geçer, bir web tarayıcısı başlatır, 3. adımda görüntülenen URL'ye gider ve 3. adımda da görüntülenen bir kodu girer. Kullanıcı, daha sonra 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 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 ö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ı kodu isteyin

Bu adımda cihazınız, 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 yanı sıra uygulamanızı tanımlar. 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 isteğinde bulunmasına ve aynı zamanda kullanıcıların uygulamanıza verdikleri erişim miktarını kontrol etmesine olanak tanır. 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ığı bir değerdir. Kullanıcı, bu cihazı daha zengin giriş özelliklerine sahip başka bir cihazdan yetkilendirir. Ö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 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 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şmek 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 vermesini isterken doğru kapsam grubunu görüntülemek için bu değeri kullanır.
verification_url Kullanıcının user_code öğesini girmek ve uygulamanıza erişim izni vermek veya erişimi reddetmek için ayrı bir cihazda gitmesi gereken URL. Kullanıcı arayüzünüz de bu değeri görüntüler.

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ş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 geri yükleme 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 karakteri içerebilir. Kullanıcıya gösterdiğiniz içerik, kullanıcının ayrı bir cihazda verification_url öğesine gitmesini ve user_code kodunu girmesini istemelidir.

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

  • user_code
    • user_code, 15 "W" boyutlu karakteri işleyebilecek bir alanda gösterilmelidir. Diğer bir deyişle, WWWWWWWWWWWWWWW kodunu doğru şekilde görüntüleyebiliyorsanız kullanıcı arayüzünüz geçerli olur. Ayrıca, user_code öğesinin kullanıcı arayüzünüzde gösterilme şeklini test ederken bu dize değerini kullanmanızı öneririz.
    • user_code, büyük/küçük harfe duyarlıdır ve büyük/küçük harf kullanımı veya başka biçimlendirme karakterleri ekleme gibi hiçbir değişiklik yapılmamalıdır.
  • verification_url
    • verification_url özelliğini görüntülediğiniz alan, 40 karakter uzunluğundaki bir URL dizesini işleyebilecek kadar geniş olmalıdır.
    • İsteğe bağlı olarak gösterim için şemayı kaldırmak dışında verification_url özelliğini hiçbir şekilde değiştirmemeniz gerekir. Şemayı (ör. https://) görüntüleme nedenleriyle URL'den çı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 sayfası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 veya 2. adımda elde edilen device_code ve user_code özelliklerinin 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 eklenecek 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üklerine benzer bir sayfa gösterilmektedir:

Kod girerek cihaz bağlayın

Kullanıcı, user_code girildikten ve giriş yapmamışsa Google'a giriş yaptıktan sonra aşağıdakine benzer bir izin ekranı görür:

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 öğesini tıklayarak) yanıtta bir erişim jetonu ve yenileme jetonu bulunur. 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 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. Yenileme jetonlarının cihazlar için 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 ömrü sınırlıdır. Uygulamanızın uzun süre 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 saklamalıdır.

Erişim engellendi

Kullanıcı cihaza erişim izni vermeyi reddederse sunucu yanıtında 403 HTTP yanıt durum kodu (Forbidden) bulunur. Yanıtta aşağıdaki hata bulunur:

{
  "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 yapma

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 herhangi biri eksikse veya yanlış parametre değerine sahipse hatalar 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 açıkça erişim izni verilene kadar yöneticilerin kapsamlara erişimi nasıl kısıtlayabileceği hakkında daha fazla bilgi edinmek için Google Workspace verilerine hangi üçüncü taraf uygulamalarının ve dahili uygulamaların erişebileceğini kontrol etme başlıklı Google Workspace Yöneticisi yardım makalesine bakın.
invalid_client 401

OAuth istemcisi bulunamadı. Örneğin, client_id parametre değeri geçersizse bu hata oluşur.

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, üzerinde 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 Organization'daki 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, Google API'lerine yönelik çağrılarınızı ayarlamak için bir istemci kitaplığı kullanabilirsiniz (örneğin, Drive Files API'yi çağırırken).

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

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 parametresi kullanılarak 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 üst bilgisi seçeneğinin kullanıldığı bir örneği burada bulabilirsiniz (tercih edilen):

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

Alternatif olarak, sorgu dizesi parametresi seçeneği:

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

Erişim jetonunu yenileme

Erişim jetonlarının süresi periyodik olarak dolar 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, 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üzerinden 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 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"
}

Yayınlanacak yenileme jetonu sayısına ilişkin sınırlar olduğunu unutmayın. Bu sınırlar, tüm istemcilerde istemci/kullanıcı kombinasyonu başına bir sınır ve tüm istemciler için kullanıcı başına başka 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 bölümüne bakın.

Ayrıca bir uygulama, kendisine verilen erişimi programlı bir şekilde iptal edebilir. Programlı iptal; kullanıcının abonelikten çıktığı, uygulamayı kaldırdığı veya bir uygulamanın gerektirdiği API kaynaklarının önemli ölçüde değiştiği durumlarda önemlidir. Diğer 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 programatik olarak iptal etmek için https://oauth2.googleapis.com/revoke isteğinde bulunur ve jetonu parametre olarak içerir:

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 jetona 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 aşağıdaki kapsamlar için desteklenir:

OpenID Connect, Google ile Oturum Açma

  • email
  • openid
  • profile

Drive API'sı

  • 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