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

.

Bu dokümanda, erişim için OAuth 2.0 yetkilendirmesinin nasıl uygulanacağı açıklanmaktadır TV'ler, oyun konsolları ve yazıcıları ekleyebilirsiniz. Daha ayrıntılı ifade etmek gerekirse bu akış, erişimi olmayan cihazlar için tasarlanmıştır. veya sınırlı giriş kapasitesine sahip olabilir.

OAuth 2.0, kullanıcıların belirli verileri bir uygulamayla paylaşmasına olanak tanırken kullanıcı adlarını, şifreleri ve diğer bilgileri gizli tutabilirsiniz. Örneğin, bir TV uygulaması şu işlemler için izin almak üzere OAuth 2.0'ı kullanabilir: Google Drive'da depolanan bir dosyayı seçin.

Bu akışı kullanan uygulamalar ayrı ayrı cihazlara dağıtıldığından, uygulamaların sır tutamayacağı varsayılmıştır. Google API'lerine, kullanıcı varken erişebilirler. uygulamada veya uygulama arka planda çalışırken görünür.

Alternatifler

Android, iOS, macOS, Linux veya Windows gibi bir platform için uygulama yazıyorsanız (Evrensel Windows Platformu dahil), tarayıcı ve tam giriş erişimine sahip özelliklerini kullanmak istiyorsanız mobil cihazlar için OAuth 2.0 akışını ve masaüstü uygulamaları. (Uygulamanız bir komut satırı olsa bile bu akışı kullanmalısınız. aracı kullanabilirsiniz.)

Yalnızca kullanıcıların Google Hesaplarıyla oturum açmasını ve Temel kullanıcı profili bilgilerini almak için JWT kimlik jetonu bkz. Oturum Açma TV'lerde ve Sınırlı Giriş Cihazlarında kullanılabilir.

Ön koşullar

Projeniz için API'leri etkinleştirin

Google API'lerini çağıran herhangi bir uygulamanın, bu API'ları API Console

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. Başka bir Uygulamanızın kullanacağı ve bunları da etkinleştireceği API'ler.

Yetkilendirme kimlik bilgileri oluşturma

Google API'lerine erişmek için OAuth 2.0 kullanan tüm uygulamaların yetkilendirme kimlik bilgilerine sahip olması gerekir kimliği tanımlayabileceksiniz. Aşağıdaki adımlarda, projenizin kimlik bilgilerini oluşturmalarını sağlar. Böylece uygulamalarınız kimlik bilgilerini kullanarak API'lere erişebilir bilgileri görürsünüz.

  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 istemesini sağlarken aynı zamanda da Böylece kullanıcılar, uygulamanıza izin verdikleri erişim miktarını kontrol edebilir. Böylece, talep edilen kapsamların sayısı ile gerçekleşme olasılığı arasında ters bir ilişki Kullanıcı izni alma.

OAuth 2.0 yetkilendirmesini uygulamaya başlamadan önce kapsamları tanımlamanızı öneririz. ve uygulamanızın erişmek için izne ihtiyacı var.

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, kullanıcıların uygulamanızı veya oyununuzu bu yetkilendirme akışını tamamlamak için daha zengin giriş özelliklerine sahip bir cihaza ayrı erişim Akışta aşağıdaki adımlar bulunur:

  1. Uygulamanız, Google'ın yetkilendirme sunucusuna kapsamları tanımlayan bir istek gönderir. uygulamanız için erişim izni isteyecektir.
  2. Sunucu, sonraki adımlarda kullanılan bazı bilgilerle yanıt verir. Örneğin, cihaz kodu ve kullanıcı kodu.
  3. Kullanıcının uygulamasını indirin.
  4. Uygulamanız, kullanıcının uygulamanızı yetkilendirdi.
  5. Kullanıcı, daha zengin giriş özelliklerine sahip bir cihaza geçer, bir web tarayıcısını açar ve 3. adımda görüntülenen URL'ye gider ve yine 3. adımda görüntülenen bir kodu girer. İlgili içeriği oluşturmak için kullanılan 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 yetkilendirmesi gereken jetonları içerir kullanıcı adına bir istek gönderiyor. (Kullanıcı uygulamanıza erişimi reddederse yanıt, jeton içermez.)

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. Çeşitli beceriler ve çalışma zamanı göz önünde bulundurulduğunda, bu belgede gösterilen örneklerde curl kullanan komut satırı yardımcı programından yararlanın. Bu örneklerin çeşitli dillere ve çalışma zamanlarına kolayca taşınabilmesi gerekir.

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

Bu adımda cihazınız Google'ın yetkilendirme sunucusuna bir HTTP POST isteği gönderir. Uygulamanızı tanımlayan https://oauth2.googleapis.com/device/code ve uygulamanızın kullanıcı adına erişmek istediği erişim kapsamları. Bu URL'yi şuradan almalısınız: Keşif dokümanı device_authorization_endpoint meta veri değeri. Aşağıdaki HTTP isteğini dahil et parametre:

Parametreler
client_id Zorunlu

Uygulamanızın istemci kimliği. Bu değeri API Console. Credentials page.

scope Zorunlu

CEVAP boşlukla ayrılmış uygulamanızın erişebileceği kaynakları tanımlayan temsil eder. Bu değerler, Google'ın belirtir. Bkz. Yüklü uygulamalar veya cihazlar için izin verilen kapsamlar listesi.

Kapsamlar, uygulamanızın yalnızca ihtiyaç duyduğu kaynaklara erişim istemesini sağlar aynı zamanda kullanıcıların, uygulamanıza erişebilecekleri erişim miktarını kontrol etmelerine de bir uygulamadır. Dolayısıyla, talep edilen kapsamların sayısı arasında ters bir ilişki vardır ve kullanıcının izin alma olasılığı bulunur.

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 listesi.

Ö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.readonly

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.readonly" \
     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 şunu içeren bir JSON nesnesi olur: özellikler:

Özellikler
device_code Google'ın, istekte bulunan uygulamayı çalıştıran cihazı tanımlamak için benzersiz şekilde atadığı bir değer. yetkilendirme. Kullanıcı bu cihaza, daha zengin özelliklere sahip başka bir cihazdan yetki verecek giriş özellikleridir. Örneğin, bir kullanıcı bir dizüstü bilgisayar veya cep telefonu kullanarak bir TV'de çalışan bir TV uygulamasıdır. Bu durumda, device_code TV'yi tanımlar.

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

expires_in device_code ve saniye cinsinden belirtilen süre user_code geçerli. Bu süre içinde kullanıcı ve cihazınız aynı zamanda kararsızsanız 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, Örneğin, değer 5 ise cihazınız Her beş saniyede bir Google'ın yetkilendirme sunucusu. Görüntüleyin adım 3.
user_code Uygulamanın bulunduğu kapsamları Google'a tanımlayan büyük/küçük harfe duyarlı bir değer. erişim isteğinde bulunabilirsiniz. Kullanıcı arayüzünüz, kullanıcıdan bu değeri bir giriş özelliklerine sahip olan ayrı bir cihaz. Google daha sonra bu değeri kapsam grubunu doğru şekilde ayarlamanız gerekir.
verification_url Söz konusu URL'yi girmek için kullanıcının ayrı bir cihazda gitmesi gereken URL user_code ve uygulamanıza erişim izni verin veya erişimi reddedin. Kullanıcı arayüzünüz bu değeri de görüntüler.

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ırsanı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 edilen verification_url ve user_code değerlerini belirtir. Her iki değer de US-ASCII karakter kümesinden yazdırılabilir herhangi bir karakteri içerebilir. İçerik kullanıcıya göstereceğiniz reklam öğesinin sayfasına gitmesi için verification_url ayarını ayrı bir cihazda yapıp user_code kodunu girin.

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

  • user_code
    • user_code, 15 "B" değerini işleyebilen bir alanda görüntülenmelidir. beden karakteri ekleyin. Diğer bir deyişle, WWWWWWWWWWWWWWW kodunu gösterebilirseniz ve kullanıcı arayüzünüzün geçerli olduğundan ve user_code, kullanıcı arayüzünüzde görüntülenir.
    • user_code büyük/küçük harfe duyarlıdır ve hiçbir şekilde değiştirilmemelidir, büyük/küçük harf değiştirme veya başka biçimlendirme karakterleri ekleme gibi işlemler yapabilir.
  • verification_url
    • verification_url öğesini görüntülediğiniz alan, olması gerekir.
    • İsteğe bağlı olarak, verification_url öğesini herhangi bir şekilde değiştirmemelisiniz. ekran şemasını kaldırın. Şemayı kapsamdan çıkarmayı görüntüleme nedenleri için URL'den (ör. https://), uygulamanızın şu işlemleri gerçekleştirebildiğinden emin olun: hem http hem de https varyantları.
ziyaret edin.

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

Kullanıcı, verification_url konumuna gitmek için ayrı bir cihaz kullanacağı için ve erişim izni vermeyi ya da erişimi reddederse kullanıcı aşağıdaki işlemleri gerçekleştirdiğinde istekte bulunan cihaza otomatik olarak bildirim gönderilmez. erişim isteğine yanıt verir. Bu nedenle, istekte bulunan cihazın Google'ın kullanıcının isteğe ne zaman yanıt verdiğini belirlemek için yetkilendirme sunucusu kullanılır.

İstekte bulunan cihaz, bir yanıt alana kadar yoklama istekleri göndermeye devam etmelidir. Kullanıcının erişim isteğine yanıt verdiğini veya device_code ve user_code, yılında elde edildi 2. adımın süresi doldu. 2. adımda döndürülen interval, bekleme süresi (saniye cinsinden)

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

Parametreler
client_id Uygulamanızın istemci kimliği. Bu değeri API Console. Credentials page.
client_secret Sağlanan client_id için istemci gizli anahtarı. Bu değeri API Console. Credentials page.
device_code Yetkilendirme sunucusu tarafından şurada döndürülen device_code: 2. Adım:
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:

Kod girerek bir cihaz bağlayın

user_code öğesini girdikten sonra ve daha önce giriş yapmadıysanız Google'a giriş yaptıktan sonra Kullanıcı, 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ğıdakilerden biriyle yanıt verir. yanıtlar:

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 Google API'lerine erişmeniz gerekir. (scope özelliği, hangi API'lerin erişebilir.)

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 ederse. 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 ayrılmış, büyük/küçük harfe duyarlı dizeler içerir.
token_type Döndürülen jetonun türü. Şu anda bu alanın değeri her zaman Bearer

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 bir süre boyunca bir API'ye erişmesi gerekiyorsa yeni bir erişim elde etmek için yenileme jetonunu kullanabilir. jeton. Uygulamanızın bu tür bir erişime ihtiyacı varsa yenileme jetonunu daha sonradan kullanabilirsiniz.

Erişim reddedildi

Kullanıcı cihaza erişim izni vermeyi reddederse sunucu yanıtı bir 403 HTTP yanıt durum kodu (Forbidden). Yanıt şunu içeriyor: şu hata oluştu:

{
  "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). Yanıt şu hatayı içerir:

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

Çok sık anket yapılıyor

Cihaz çok sık yoklama istekleri gönderirse sunucu bir 403 döndürür. HTTP yanıt durum kodu (Forbidden). Yanıt şunu içerir: hata:

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

Diğer hatalar

Yetkilendirme sunucusu, yoklama isteğinde gerekli olan veya parametre değeri yanlış olabilir. Bu istekler genellikle bir 400 içerir (Bad Request) veya 401 (Unauthorized) HTTP yanıt durumu girin. Bu hatalar şunlardır:

Hata HTTP Durum Kodu Açıklama
admin_policy_enforced 400 Google Hesabı, politikalarına uymak zorundadır. Google Workspace Yönetici yardımına göz atın hangi üçüncü taraf ve reklam öğesi için nasıl yararlanabileceğiniz hakkında daha fazla bilgi için yöneticiniz, OAuth'unuza açıkça erişim izni verilene kadar kapsamlara erişimi kısıtlayabilir girin.
invalid_client 401

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

OAuth istemci türü yanlış. Lütfen uygulama türü değeri için TV'ler ve Sınırlı Giriş cihazları olarak ayarlandı.

invalid_grant 400 code parametre değeri geçersiz, daha önce hak talebinde bulunulmuş veya kullanılamıyor ayrıştırılır.
unsupported_grant_type 400 grant_type parametre değeri geçersiz.
org_internal 403 İstekteki OAuth istemci kimliği, Google Hesaplarına erişimi sınırlayan bir projenin parçası belirli bir Google Cloud Kuruluşu. Şunu onaylayın: kullanıcı türü yapılandırma kullanıyorsanız daha fazla bilgi edinin.

Google API'lerini çağırma

Uygulamanız bir erişim jetonu aldıktan sonra, bu jetonu kullanarak bir Google Belirli bir kullanıcı adına API kullanıcı hesabı(API'nin gerektirdiği erişim kapsamları verildiyse) ile birlikte çalışır. Bunu yapmak için API'ye yapılan bir istekte, access_token sorgusu ekleyerek erişim jetonunu parametresi veya Authorization HTTP başlığı Bearer değeri olabilir. Mümkünse HTTP üstbilgisi tercih edilir, çünkü sorgu dizeleri sunucu günlüklerinde görünür olma eğilimi gösterir. Çoğu zaman Google API'lerine yapılan çağrılarınızı ayarlamak için bir istemci kitaplığı kullanabilirsiniz (örneğin, YouTube Data API'yi çağırma).

YouTube Data API'nin yalnızca YouTube için hizmet hesaplarını desteklediğini unutmayın Kayıtlar gibi birden fazla YouTube kanalına sahip ve bunları yöneten içerik sahipleri plak şirketleri ve film stüdyoları.

Tüm Google API'lerini deneyebilir ve kapsamlarını şuradan görüntüleyebilirsiniz: OAuth 2.0 Playground (OAuth 2.0 Oyun Alanı).

HTTP GET örnekleri

Bir youtube.channels Authorization: Bearer HTTP kullanan uç nokta (YouTube Data API) başlık aşağıdaki gibi görünebilir. Kendi erişim jetonunuzu belirtmeniz gerektiğini unutmayın:

GET /youtube/v3/channels?part=snippet&mine=true HTTP/1.1
Host: www.googleapis.com
Authorization: Bearer access_token

Aşağıda, kimliği doğrulanmış kullanıcı için aynı API'ye access_token kullanılarak yapılan bir çağrı verilmiştir. sorgu dizesi parametresi:

GET https://www.googleapis.com/youtube/v3/channels?access_token=access_token&part=snippet&mine=true

curl örnek

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

curl -H "Authorization: Bearer access_token" https://www.googleapis.com/youtube/v3/channels?part=snippet&mine=true

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

curl https://www.googleapis.com/youtube/v3/channels?access_token=access_token&part=snippet&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. Siz Kullanıcı izin istemeden erişim jetonunu yenileyebilir (kullanıcının mevcut değil) girmeniz gerekir.

Uygulamanız, erişim jetonunu yenilemek için HTTPS POST gönderir yetkilendirme sunucusuna (https://oauth2.googleapis.com/token) gönderdiğiniz istek üzerine aşağıdaki parametreleri içerir:

Alanlar
client_id API Consoleöğesinden alınan istemci kimliği.
client_secret API Consoleöğesinden alınan istemci gizli anahtarı.
grant_type Farklı OAuth 2.0 spesifikasyonu, 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 bir örnek yanıt:

{
  "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; başına bir sınır ve tüm istemcilerde her kullanıcı için ayrı ayrı düzenleyebilirsiniz. Yenileme jetonlarını kaydetmeniz gerekir uzun süreli depolama alanına sahip olacak ve geçerli kaldıkları sürece bunları kullanmaya devam edebileceksiniz. Uygulamanız çok fazla yenileme jetonu istiyorsa bu sınırlarla karşılaşabilir. Böyle bir durumda eski yenileme jetonları çalışmayı durduracak.

Jetonu iptal etme

Bazı durumlarda, bir kullanıcı bir uygulamaya verilen erişimi iptal etmek isteyebilir. Kullanıcı erişimi iptal edebilir adresini ziyaret ederek Hesap Ayarları. Bkz. Kaldır Üçüncü taraf sitelerin site veya uygulama erişimi bölümü ve hesabınıza erişimi olan uygulamalar destek dokümanına bakın.

Bir uygulamanın, kendisine verilen erişimi programlı olarak iptal etmesi de mümkündür. Programlı iptal etme, bir kullanıcının e-posta listesinden çıktığı, bir veya sonraki bir veya bir uygulamanın gerektirdiği API kaynakları önemli ölçüde değişmiştir. Başka bir deyişle, Kaldırma sürecinin bir bölümü, izinleri önceden sağlamak için bir API isteği içerebilir. kaldırılır.

Uygulamanız, bir jetonu programlı bir şekilde iptal etmek için https://oauth2.googleapis.com/revoke 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 bir yenileme jetonu varsa yenileme jetonu da iptal edilir.

İptal işlemi başarıyla tamamlanırsa yanıtın HTTP durum kodu 200 Hata koşulları için 400 ile birlikte HTTP durum kodu döndürülür hata kodu içerir.

İ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

Hesaplar Arası Korumayı Uygulama

Kullanıcılarınızın güvenliğini korumak için atmanız gereken ek bir adım Hesaplar Arası Google'ın Hesaplar Arası Koruma Hizmeti'ni kullanarak koruma. Bu hizmet sayesinde şunları yapabilirsiniz: uygulamanıza aşağıdaki konularda bilgi sağlayan güvenlik işlemi bildirimlerine abone olun: kullanıcı hesabında önemli değişiklikler yapabilir. Daha sonra bu bilgileri kullanarak karar verdiğinizden emin olun.

Google'ın Hesaplar Arası Koruma Hizmeti tarafından uygulamanıza gönderilen etkinlik türlerine örnek olarak aşağıdakiler verilebilir:

  • https://schemas.openid.net/secevent/risc/event-type/sessions-revoked
  • https://schemas.openid.net/secevent/oauth/event-type/token-revoked
  • https://schemas.openid.net/secevent/risc/event-type/account-disabled

Bkz. Kullanıcı hesaplarını Hesaplar Arası Koruma ile koruma 'nı inceleyin. inceleyin.