Bu belgede, 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 spesifik olarak bu akış, tarayıcıya erişimi olmayan veya sınırlı giriş özelliklerine sahip cihazlar için tasarlanmıştır.
OAuth 2.0 sayesinde kullanıcılar, bir uygulamayla belirli verileri paylaşırken kullanıcı adlarını, şifrelerini ve diğer bilgilerini gizli tutabilir. Ö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 tek tek cihazlara dağıtıldığından, uygulamaların sır tutamayacağı varsayılır. Kullanıcı uygulamada bulunurken veya uygulama arka planda çalışırken Google API'lerine erişebilirler.
Alternatifler
Tarayıcıya ve tam giriş özelliklerine erişimi olan Android, iOS, macOS, Linux veya Windows gibi bir platform için uygulama yazıyorsanız (Evrensel Windows Platformu dahil) 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ışı kullanmanız gerekir.)
Kullanıcıların yalnızca Google Hesaplarıyla oturum açmasını ve temel kullanıcı profili bilgilerini almak için JWT kimlik jetonunu 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ştirme
Google API'lerini çağıran tüm uygulamaların bu API'leri API Console'de etkinleştirmesi gerekir.
Projenizde bir API'yi etkinleştirmek için:
- Open the API Library in the Google API Console.
- If prompted, select a project, or create a new one.
- 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ıtan yetkilendirme kimlik bilgilerine sahip olması gerekir. Aşağıdaki adımlarda, projeniz için nasıl kimlik bilgisi oluşturacağınız açıklanmaktadır. Uygulamalarınız daha sonra bu kimlik bilgilerini kullanarak söz konusu proje için etkinleştirdiğiniz API'lere erişebilir.
- Go to the Credentials page.
- Create Client'ı (İstemci Oluştur) tıklayın.
- TV'ler ve Sınırlı Giriş cihazları uygulama türünü seçin.
- 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ını sağlar. Ayrıca, kullanıcıların uygulamanıza verdiği erişim miktarını kontrol etmesine de olanak tanır. Bu nedenle, istenen 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şim izni gerektireceği kapsamları belirlemenizi öneririz.
YouTube Data API v3 aşağıdaki kapsamları kullanır:
Kapsam | Açıklama |
---|---|
https://www. |
YouTube hesabınızı yönetin |
https://www. |
Mevcut etkin kanal üyelerinizin listesini, geçerli düzeylerini ve ne zaman üye olduklarını görün |
https://www. |
YouTube videolarınızı, derecelendirmelerinizi, yorumlarınızı ve altyazılarınızı görün, düzenleyin ve kalıcı olarak silin |
https://www. |
YouTube hesabınızı görüntüleyin |
https://www. |
YouTube videolarınızı yönetin |
https://www. |
YouTube'daki varlıklarınızı ve ilişkili içeriği görüntüleyin ve yönetin |
https://www. |
Bir 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ını edinme
Uygulamanız sınırlı giriş özelliklerine sahip bir cihazda çalışsa bile kullanıcıların bu yetkilendirme akışını tamamlamak için daha zengin giriş özelliklerine sahip bir cihaza ayrı erişimi olması gerekir. Akış aşağıdaki adımlardan oluşur:
- Uygulamanız, Google'ın yetkilendirme sunucusuna, uygulamanızın erişim izni isteyeceği kapsamları tanımlayan bir istek gönderir.
- Sunucu, sonraki adımlarda kullanılan çeşitli bilgilerle (ör. cihaz kodu ve kullanıcı kodu) yanıt verir.
- Kullanıcının uygulamanızı yetkilendirmek için ayrı bir cihaza girebileceği bilgileri gösterirsiniz.
- Uygulamanız, kullanıcının uygulamanızı yetkilendirip yetkilendirmediğini belirlemek için Google'ın yetkilendirme sunucusunu yoklamaya başlar.
- Kullanıcı, daha zengin giriş özelliklerine sahip bir cihaza geçer, bir web tarayıcısı başlatır, 3. adımda gösterilen URL'ye gider ve 3. adımda da gösterilen kodu girer. Kullanıcı daha sonra uygulamanıza erişim izni verebilir (veya erişimi reddedebilir).
- Yoklama isteğinize verilen bir sonraki yanıtta, uygulamanızın kullanıcı adına istekleri yetkilendirmek için ihtiyaç duyduğu jetonlar bulunur. (Kullanıcı, uygulamanıza erişimi reddettiyse yanıtta jeton bulunmaz.)
Aşağıdaki resimde bu işlem gösterilmektedir:

Bu adımlar aşağıdaki bölümlerde ayrıntılı olarak açıklanmıştır. Cihazların sahip olabileceği özellikler ve çalışma zamanı ortamları göz önüne alındığında, bu belgede gösterilen örneklerde curl
komut satırı yardımcı programı kullanılır. Bu örnekler, çeşitli dillere ve çalışma zamanlarına kolayca taşınabilmelidir.
1. adım: Cihaz ve kullanıcı kodlarını isteyin
Bu adımda cihazınız, Google'ın yetkilendirme sunucusuna (https://oauth2.googleapis.com/device/code
) bir HTTP POST isteği gönderir. Bu istek, uygulamanızı ve uygulamanızın kullanıcı adına erişmek istediği erişim kapsamlarını tanımlar.
Bu URL'yi, device_authorization_endpoint
meta veri değerini kullanarak Discovery belgesinden almanız gerekir. Aşağıdaki HTTP isteği parametrelerini ekleyin:
Parametreler | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
client_id |
Zorunlu
Uygulamanızın istemci kimliği. Bu değeri bölümünde bulabilirsiniz. |
||||||||||||||||
scope |
Zorunlu
Uygulamanızın kullanıcı adına erişebileceği kaynakları tanımlayan, boşlukla ayrı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 izin verilen kapsamlar listesine bakın. Kapsamlar, uygulamanızın yalnızca ihtiyaç duyduğu kaynaklara erişim isteğinde bulunmasını sağlar. Ayrıca, kullanıcıların uygulamanıza verdikleri erişim miktarını kontrol etmelerine de olanak tanır. Bu nedenle, istenen kapsam sayısı ile kullanıcı izni alma olasılığı arasında ters orantı vardır. YouTube Data API v3 aşağıdaki kapsamları kullanır:
OAuth 2.0 API Kapsamları dokümanında, Google API'lerine erişmek için kullanabileceğiniz kapsamların tam listesi yer alı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=https%3A%2F%2F2.zoppoz.workers.dev%3A443%2Fhttps%2Fwww.googleapis.com%2Fauth%2Fyoutube.readonly
Bu örnekte, aynı isteği göndermek için kullanılan curl
komutu gösterilmektedir:
curl -d "client_id=client_id&scope=https%3A%2F%2F2.zoppoz.workers.dev%3A443%2Fhttps%2Fwww.googleapis.com%2Fauth%2Fyoutube.readonly" \ https://oauth2.googleapis.com/device/code
2. adım: Yetkilendirme sunucusu yanıtını işleyin
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 |
Google'ın, yetkilendirme isteyen uygulamayı çalıştıran cihazı tanımlamak için benzersiz olarak atadığı bir değer. 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 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 süre (saniye cinsinden). Bu süre içinde kullanıcı yetkilendirme akışını tamamlamazsa ve cihazınız da kullanıcının kararıyla ilgili bilgileri almak için yoklama yapmazsa bu işlemi 1. adımdan itibaren yeniden başlatmanız gerekebilir. |
interval |
Cihazınızın yoklama istekleri arasında beklemesi gereken sürenin uzunluğu (saniye cinsinden). Örneğin, değer 5 ise cihazınız her beş saniyede bir Google'ın yetkilendirme sunucusuna yoklama isteği göndermelidir. Daha fazla bilgi için 3. adıma bakın. |
user_code |
Uygulamanın erişim isteğinde bulunduğu kapsamları Google'a bildiren, büyük/küçük harfe duyarlı bir değer. Kullanıcı arayüzünüz, kullanıcıya bu değeri daha zengin giriş özelliklerine sahip ayrı bir cihaza girmesini söyler. Ardından Google, kullanıcıdan uygulamanıza erişim izni vermesini isterken doğru kapsam kümesini göstermek için bu değeri kullanır. |
verification_url |
Kullanıcının user_code girmek ve uygulamanıza erişim izni vermek ya da erişimi reddetmek için ayrı bir cihazda gitmesi gereken URL. Kullanıcı arayüzünüzde 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şkili kotayı aşarsa aşağıdaki hatayı içeren bir 403 yanıtı alırsınız:
{ "error_code": "rate_limit_exceeded" }
Bu durumda, istek hızını azaltmak için geri çekilme stratejisi kullanın.
3. adım: Kullanıcı kodunu gösterin
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ümesindeki yazdırılabilir karakterleri içerebilir. Kullanıcıya gösterdiğiniz içerik, kullanıcıyı ayrı bir cihazda verification_url
simgesine gidip user_code
girmeye yönlendirmelidir.
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şleyebilen bir alanda gösterilmelidir. Başka bir deyişle,WWWWWWWWWWWWWWW
kodunu doğru şekilde gösterebiliyorsanız kullanıcı arayüzünüz geçerlidir veuser_code
öğesinin kullanıcı arayüzünüzde nasıl göründüğünü 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 durumunu değiştirme veya başka biçimlendirme karakterleri ekleme gibi herhangi bir şekilde değiştirilmemelidir.
verification_url
verification_url
öğesini gösterdiğiniz alan, 40 karakter uzunluğundaki bir URL dizesini işleyecek kadar geniş olmalıdır.verification_url
, isteğe bağlı olarak görüntüleme şemasını kaldırmak dışında hiçbir şekilde değiştirilmemelidir. Görüntüleme nedenleriyle URL'den şemayı (ör.https://
) kaldırmayı planlıyorsanız uygulamanızın hemhttp
hem dehttps
varyantlarını işleyebildiğinden emin olun.
4. adım: Google'ın yetkilendirme sunucusunu yoklayı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, kullanıcının isteğe ne zaman yanıt verdiğini belirlemek için istekte bulunan cihazın 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
değerlerinin süresi dolana kadar yoklama istekleri göndermeye devam etmelidir. 2. adımda döndürülen interval
değeri, istekler arasında beklenecek süreyi saniye cinsinden belirtir.
Yoklanacak 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 bölümünde bulabilirsiniz. |
client_secret |
Belirtilen client_id için istemci gizli anahtarı. Bu değeri
bölümünde bulabilirsiniz. |
device_code |
Yetkilendirme sunucusu tarafından 2. adımda 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 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österdiğiniz verification_url
sayfasına gittiğinde gördüklerine benzer bir sayfa gösterilmektedir:

user_code
girildikten ve henüz oturum açılmadıysa Google'da oturum açıldıktan sonra kullanıcı, aşağıda gösterilene benzer bir izin ekranı görür:

6. adım: Anket isteklerine verilen yanıtları ele alın
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, erişim jetonu ve yenileme jetonu içerir. Bu jetonlar, cihazınızın kullanıcı adına Google API'lerine erişmesini sağlar. (Yanıtın scope
özelliği, cihazın hangi API'lere erişebileceğini belirler.)
Bu durumda, API yanıtında aşağıdaki alanlar bulunur:
Alanlar | |
---|---|
access_token |
Uygulamanızın bir Google API isteğini yetkilendirmek için gönderdiği jeton. |
expires_in |
Erişim jetonunun kalan kullanım ömrü (saniye cinsinden). |
refresh_token |
Yeni bir erişim jetonu almak için kullanabileceğiniz jeton. Yenileme jetonları, kullanıcı erişimi iptal edene veya yenileme jetonunun süresi dolana kadar geçerlidir. Yenileme jetonlarının her zaman cihazlar için döndürüldüğünü unutmayın. |
refresh_token_expires_in |
Yenileme jetonunun kalan kullanım ömrü (saniye cinsinden). Bu değer yalnızca kullanıcı zamana dayalı erişim izni verdiğinde ayarlanır. |
scope |
access_token tarafından verilen erişim kapsamları, boşlukla ayrılmış ve büyük/küçük harfe duyarlı dizeler listesi olarak ifade edilir. |
token_type |
Döndürülen jetonun türü. Bu alanın değeri şu anda her zaman Bearer olarak ayarlanı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 bir süre boyunca bir API'ye erişmesi gerekiyorsa yeni bir erişim jetonu almak için yenileme jetonunu kullanabilir. Uygulamanızın bu tür bir erişime ihtiyacı varsa yenileme jetonunu daha sonra kullanmak üzere saklaması gerekir.
Erişim reddedildi
Kullanıcı cihaza erişim izni vermeyi reddederse sunucu yanıtında 403
HTTP yanıt durum kodu (Forbidden
) bulunur. Yanıtta şu hata yer alır:
{ "error": "access_denied", "error_description": "Forbidden" }
Yetkilendirme bekleniyor
Kullanıcı henüz yetkilendirme akışını tamamlamadıysa sunucu 428
HTTP yanıt durum kodunu (Precondition Required
) döndürür. Yanıtta şu hata bulunur:
{ "error": "authorization_pending", "error_description": "Precondition Required" }
Çok sık anket yapma
Cihaz çok sık yoklama isteği gönderirse sunucu 403
HTTP yanıt durum kodunu (Forbidden
) döndürür. Yanıtta şu hata yer alır:
{ "error": "slow_down", "error_description": "Forbidden" }
Diğer hatalar
Yetkilendirme sunucusu, yoklama isteğinde gerekli parametreler eksikse veya parametre değeri yanlışsa da 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. Bir yöneticinin, OAuth istemci kimliğinize erişim açıkça verilene kadar kapsamlara erişimi nasıl kısıtlayabileceği hakkında daha fazla bilgi için Google Workspace Yönetici Yardım Merkezi'ndeki Google Workspace verilerine hangi üçüncü taraf uygulamalar ve dahili uygulamaların erişebileceğini yönetme başlıklı makaleyi inceleyin. |
invalid_client |
401 |
OAuth istemcisi bulunamadı. Örneğin, OAuth istemci türü yanlış. Müşteri kimliği için uygulama türününTV'ler ve sınırlı giriş cihazları olarak ayarlandığından emin olun. |
invalid_grant |
400 |
code parametre değeri geçersiz, daha önce talep edilmiş 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 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 gerektirdiği erişim kapsamları verilmişse jetonu kullanarak belirli bir kullanıcı hesabı adına Google API'sine çağrı yapabilirsiniz. Bunu yapmak için API'ye yapılan bir isteğe erişim jetonunu ekleyin. Bunun için access_token
sorgu parametresini veya Authorization
HTTP üstbilgisi Bearer
değerini ekleyebilirsiniz. Sorgu dizeleri sunucu günlüklerinde görünür olduğundan mümkün olduğunda HTTP üstbilgisi tercih edilir. Çoğu durumda, Google API'lerine yönelik çağrılarınızı ayarlamak için bir istemci kitaplığı kullanabilirsiniz (örneğin, YouTube Data API'yi çağırırken).
YouTube Data API'nin yalnızca plak şirketleri ve film stüdyoları gibi birden fazla YouTube kanalına sahip olan ve bu kanalları yöneten YouTube içerik sahipleri için hizmet hesaplarını desteklediğini unutmayın.
Tüm Google API'lerini deneyebilir ve kapsamlarını OAuth 2.0 Playground'da görüntüleyebilirsiniz.
HTTP GET örnekleri
Authorization: Bearer
HTTP üstbilgisi kullanılarak
youtube.channels
uç noktasına (YouTube Data API) yapılan bir çağrı 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, access_token
sorgu dizesi parametresi kullanılarak kimliği doğrulanmış kullanıcı için aynı API'ye yapılan bir çağrı verilmiştir:
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. HTTP üstbilgisi seçeneğinin (tercih edilen) kullanıldığı bir örneği aşağıda bulabilirsiniz:
curl -H "Authorization: Bearer access_token" https://www.googleapis.com/youtube/v3/channels?part=snippet&mine=true
Alternatif olarak sorgu dizesi parametresi seçeneğini de kullanabilirsiniz:
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 düzenli olarak dolar ve ilgili API isteği için geçersiz kimlik bilgileri haline gelir. Jetonla ilişkili kapsamlar için çevrimdışı erişim isteğinde bulunduysanız kullanıcıdan izin istemeden (kullanıcı mevcut değilken de dahil olmak üzere) erişim jetonunu yenileyebilirsiniz.
Erişim jetonunu yenilemek için uygulamanız, 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'dan alınan istemci kimliği. |
client_secret |
API Consoleadresinden alınan istemci gizli anahtarı. |
grant_type |
OAuth 2.0 belirtiminde tanımlandığı gibi bu alanın değeri refresh_token olarak ayarlanmalıdır. |
refresh_token |
Yetkilendirme kodu değiş tokuşundan 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" }
Yenileme jetonlarının sayısıyla ilgili sınırlamalar olduğunu unutmayın. Bir sınırlama, istemci/kullanıcı kombinasyonu başına, diğeri ise tüm istemcilerdeki kullanıcı başına uygulanır. Yenileme jetonlarını uzun süreli depolama alanına kaydetmeli ve geçerli oldukları sürece kullanmaya devam etmelisiniz. Uygulamanız çok fazla yenileme jetonu isterse bu sınırlara takılabilir. Bu durumda eski yenileme jetonları çalışmayı durdurur.
Jeton iptali
Bazı durumlarda kullanıcılar, bir uygulamaya verilen erişimi iptal etmek isteyebilir. Kullanıcı, Hesap Ayarları'nı ziyaret ederek erişimi iptal edebilir. Daha fazla bilgi için Hesabınıza erişimi olan üçüncü taraf site ve uygulamalar başlıklı destek belgesinin Site veya uygulama erişimini kaldırma bölümüne bakın.
Bir uygulamanın, kendisine verilen erişimi programatik olarak iptal etmesi de mümkündür. Kullanıcının e-posta listesinden çıktığı, bir uygulamayı kaldırdığı veya bir uygulamanın ihtiyaç duyduğu API kaynaklarının önemli ölçüde değiştiği durumlarda programatik iptal önemlidir. Diğer bir deyişle, kaldırma işleminin bir parçası olarak, daha önce uygulamaya verilen izinlerin kaldırıldığından emin olmak için bir API isteği gönderilebilir.
Bir jetonu programatik olarak iptal etmek için uygulamanız https://oauth2.googleapis.com/revoke
adresine bir 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}
Jeton, erişim jetonu veya yenileme jetonu olabilir. Jeton bir erişim jetonuysa ve karşılık gelen bir yenileme jetonu varsa yenileme jetonu da iptal edilir.
İptal işlemi başarıyla işlenirse yanıtın HTTP durum kodu 200
olur. Hata durumlarında, hata koduyla birlikte bir HTTP durum kodu 400
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
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
Zamana dayalı erişim
Zamana dayalı erişim, kullanıcının bir işlemi tamamlamak için sınırlı bir süre boyunca uygulamanıza verilerine erişim izni vermesine olanak tanır. İzin verme akışı sırasında belirli Google ürünlerinde kullanılabilen zamana dayalı erişim, kullanıcılara sınırlı bir süre için erişim izni verme seçeneği sunar. Örneğin, Data Portability API, tek seferlik veri aktarımına olanak tanır.
Kullanıcı, uygulamanıza zamana dayalı erişim izni verdiğinde yenileme jetonunun süresi belirtilen süre sonunda dolar. Yenileme jetonlarının belirli durumlarda daha erken geçersiz kılınabileceğini unutmayın. Ayrıntılar için bu durumlara bakın. Yetkilendirme kodu
değiştirme yanıtında döndürülen refresh_token_expires_in
alanı, bu gibi durumlarda yenileme jetonunun süresinin dolmasına kadar kalan süreyi gösterir.
Hesaplar Arası Koruma'yı uygulama
Kullanıcılarınızın hesaplarını korumak için atmanız gereken ek bir adım da Google'ın hesaplar arası koruma hizmetinden yararlanarak hesaplar arası korumayı uygulamaktır. Bu hizmet, kullanıcı hesabında yapılan önemli değişiklikler hakkında uygulamanıza bilgi sağlayan güvenlik etkinliği bildirimlerine abone olmanıza olanak tanır. Ardından, etkinliklere nasıl yanıt vereceğinize bağlı olarak işlem yapmak için bu bilgileri kullanabilirsiniz.
Google'ın hesaplar arası koruma hizmeti tarafından uygulamanıza gönderilen etkinlik türlerine ilişkin bazı örnekler:
-
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
Hesaplar Arası Koruma'yı uygulama ve kullanılabilir etkinliklerin tam listesi hakkında daha fazla bilgi için Hesaplar Arası Koruma ile kullanıcı hesaplarını koruma sayfasını inceleyin.