Bu belge, telefonlar, tabletler ve bilgisayarlar gibi cihazlara yüklenen uygulamaların, YouTube Analytics API'sine veya YouTube Reporting API'sine erişimi yetkilendirmek için Google'ın OAuth 2.0 uç noktalarını nasıl kullandığını açıklamaktadı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 uygulama OAuth 2.0 kullanarak bir kanalın YouTube Analytics verilerini alma izni edinebilir.
Yüklenen uygulamalar bireysel cihazlara dağıtılır ve bu uygulamaların sır saklayamayacağı varsayılır. Kullanıcı uygulamada bulunduğu sırada veya uygulama arka planda çalışırken Google API'lerine erişebilirler.
Bu yetkilendirme akışı, web sunucu uygulamaları için kullanılanla benzerdir. Temel fark, yüklü uygulamaların sistem tarayıcısını açması ve Google'ın yetkilendirme sunucusundan gelen yanıtları işlemek için yerel bir yönlendirme URI'si sağlaması gerektiğidir.
Kitaplıklar ve örnekler
iOS uygulamaları için Google ile Giriş Yap iOS SDK'sının en son sürümünü kullanmanızı öneririz. SDK, kullanıcı yetkilendirmesini yönetir ve bu kılavuzda açıklanan alt düzey protokole göre uygulanması daha basittir.
Sistem tarayıcısını desteklemeyen veya TV'ler, oyun konsolları, kameralar veya yazıcılar gibi sınırlı giriş özelliklerine sahip cihazlarda çalışan uygulamalar için bkz. TV'ler ve Cihazlar için OAuth 2.0 veya TV'lerde ve Sınırlı Giriş Cihazlarında Oturum Açma.
Ön koşullar
Projeniz için API'leri etkinleştirin.
Google API'lerini çağıran herhangi bir uygulamanın, bu API'leri API Consoleiçinde etkinleştirmesi gerekir.
Projeniz için bir API'yi etkinleştirmek için:
- Open the API Library içinde Google API Console.
- If prompted, select a project, or create a new one.
- YouTube Analytics API'sini ve YouTube Reporting API'sini bulmak ve etkinleştirmek için Kütüphane sayfasını kullanın. YouTube Analytics verilerini alan birçok uygulama aynı zamanda YouTube Veri API'si ile de arayüz oluşturur. Uygulamanızın kullanacağı diğer API'leri de bulun ve onları da etkinleştirin.
Yetkilendirme kimlik bilgilerini oluşturun
Google API'lerine erişmek için OAuth 2.0 kullanan herhangi bir uygulamanın, uygulamayı Google'ın OAuth 2.0 sunucusuna tanıtan yetkilendirme kimlik bilgilerine sahip olması gerekir. Aşağıdaki adımlar, projeniz için kimlik bilgilerini nasıl oluşturacağınızı açıklamaktadı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 Clients page.
- Müşteri oluştur seçeneğine tıklayın.
- Aşağıdaki bölümlerde Google'ın yetkilendirme sunucusunun desteklediği istemci türleri açıklanmaktadır. Uygulamanız için önerilen istemci türünü seçin, OAuth istemcinize bir ad verin ve formdaki diğer alanları uygun şekilde ayarlayın.
iOS
- iOS uygulama türünü seçin.
- OAuth istemcisi için bir ad girin. Bu isim, müşteriyi tanımlamak için projenizin Clients page kısmında görüntülenir.
- Uygulamanızın paket tanımlayıcısını girin. Paket kimliği, uygulamanızın bilgi özellik listesi kaynak dosyasındaki (info.plist) CFBundleIdentifier anahtarının değeridir. Bu değer genellikle Xcode proje düzenleyicisinin Genel bölmesinde veya İmzalama ve Yetenekler bölmesinde görüntülenir. Paket kimliği ayrıca Apple'ın App Store Connect sitesindeki uygulamanın Uygulama Bilgileri sayfasının Genel Bilgiler bölümünde de görüntülenir.
Uygulamanız için doğru paket kimliğini kullandığınızdan emin olun, çünkü Uygulama Kontrolü özelliğini kullanıyorsanız bunu değiştiremeyeceksiniz.
- (İsteğe bağlı)
Uygulamanız Apple App Store'da yayınlandıysa, uygulamanızın App Store kimliğini girin. Mağaza Kimliği, her Apple App Store URL'sinde yer alan sayısal bir dizedir.
- iOS veya iPadOS cihazınızda Apple App Store uygulamasını açın.
- Uygulamanızı arayın.
- Paylaş düğmesini (kare ve yukarı ok sembolü) seçin.
- Bağlantıyı Kopyala seçeneğini seçin.
- Bağlantıyı bir metin düzenleyiciye yapıştırın. App Store ID, URL'nin son kısmıdır.
Örnek:
https://apps.apple.com/app/google/id284815942
- (İsteğe bağlı)
Takım Kimliğinizi girin. Daha fazla bilgi için Apple Geliştirici Hesabı belgelerinde Ekip Kimliğinizi Bulun bölümüne bakın.
Not: İstemciniz için Uygulama Denetimini etkinleştiriyorsanız, Ekip Kimliği alanı zorunludur. - (İsteğe bağlı)
iOS uygulamanız için Uygulama Denetimini etkinleştirin. Uygulama Denetimini etkinleştirdiğinizde, Apple'ın Uygulama Doğrulama hizmeti, OAuth istemcinizden kaynaklanan OAuth 2.0 isteklerinin gerçek olduğunu ve uygulamanızdan geldiğini doğrulamak için kullanılır. Bu, uygulama taklit etme riskini azaltmaya yardımcı olur. iOS uygulamanız için Uygulama Denetimini etkinleştirme hakkında daha fazla bilgi edinin.
- Oluştur'u tıklayın.
UWP
- Evrensel Windows Platformu uygulama türünü seçin.
- OAuth istemcisi için bir ad girin. Bu isim, müşteriyi tanımlamak için projenizin Clients page kısmında görüntülenir.
- Uygulamanızın 12 karakterli Microsoft Store kimliğini girin. Bu değeri, Microsoft İş Ortağı Merkezi'ndeki Uygulama yönetimi bölümünün Uygulama kimliği sayfasında bulabilirsiniz.
- Oluştur'u tıklayın.
UWP uygulamalarında yönlendirme URI'si, uygulamanızın benzersiz Paket Güvenliği Tanımlayıcısı (SID) kullanılarak oluşturulur. Uygulamanızın Package SID değerini Visual Studio projenizdeki Package.appxmanifest dosyasında bulabilirsiniz.
Google Cloud Console'da istemci kimliğinizi oluştururken yönlendirme URI'sini aşağıdaki biçimde belirtmeniz gerekir. Bu biçimde, Paket SID'nizin küçük harfli değerini kullanın:
ms-app://YOUR_APP_PACKAGE_SID
UWP uygulamalarında, özel URI şeması Microsoft belgelerinde belirtildiği gibi 39 karakterden uzun olamaz.
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 Analytics API aşağıdaki kapsamları kullanır:
| Kapsam | Açıklama |
|---|---|
https://www. |
YouTube hesabınızı yönetin |
https://www. |
YouTube hesabınızı görüntüleyin |
https://www. |
YouTube'daki varlıklarınızı ve ilişkili içeriği görüntüleyin ve yönetin |
https://www. |
YouTube içeriğiniz için finansal ve finansal olmayan YouTube Analytics raporlarını görüntüleyin |
https://www. |
YouTube içeriğiniz için YouTube Analytics raporlarını görüntüleyin |
YouTube Reporting API aşağıdaki kapsamları kullanır:
| Kapsam | Açıklama |
|---|---|
https://www. |
YouTube içeriğiniz için finansal ve finansal olmayan YouTube Analytics raporlarını görüntüleyin |
https://www. |
YouTube içeriğiniz için YouTube Analytics raporlarını görüntüleyin |
OAuth 2.0 API Kapsamları dokümanında, Google API'lerine erişmek için kullanabileceğiniz kapsamların tam listesi yer alır.
OAuth 2.0 erişim jetonlarını edinme
Aşağıdaki adımlarda, uygulamanızın kullanıcı adına bir API isteği gerçekleştirmek için kullanıcının iznini almak üzere Google'ın OAuth 2.0 sunucusuyla nasıl etkileşimde bulunduğu gösterilmektedir. Uygulamanızın, kullanıcı yetkilendirmesi gerektiren bir Google API isteğini yürütmeden önce bu izni almış olması gerekir.
1. adım: Kod doğrulayıcı ve sorgu oluşturun
Google, yüklenen uygulama akışını daha güvenli hale getirmek için Proof Key for Code Exchange (PKCE) protokolünü destekler. Her yetkilendirme isteği için benzersiz bir kod doğrulayıcı oluşturulur ve "code_challenge" adı verilen dönüştürülmüş değeri, yetkilendirme kodunu almak için yetkilendirme sunucusuna gönderilir.
Kod doğrulayıcıyı oluşturma
code_verifier, ayrılmamış karakterler [A-Z] / [a-z] / [0-9] / "-" / "." / "_" / "~" kullanılarak oluşturulan, yüksek entropili bir kriptografik rastgele dizedir. Minimum uzunluğu 43 karakter, maksimum uzunluğu ise 128 karakterdir.
Kod doğrulayıcı, değeri tahmin etmeyi pratik olmayacak kadar zorlaştıracak kadar entropiye sahip olmalıdır.
Kod doğrulamasını oluşturma
Kod zorluğu oluşturmak için iki yöntem desteklenir.
| Code Challenge Oluşturma Yöntemleri | |
|---|---|
| S256 (önerilen) | Kod sorgulaması, kod doğrulayıcının Base64URL (doldurma olmadan) kodlamalı SHA256 karmasıdır.
|
| plain | Kod zorluğu, yukarıda oluşturulan kod doğrulayıcı ile aynı değere sahiptir.
|
2. adım: Google'ın OAuth 2.0 sunucusuna istek gönderin
Kullanıcı yetkilendirmesi almak için https://accounts.google.com/o/oauth2/v2/auth adresindeki Google'ın yetkilendirme sunucusuna istek gönderin. Bu uç nokta, etkin oturum aramasını işler, kullanıcının kimliğini doğrular ve kullanıcı iznini alır. Uç noktaya yalnızca SSL üzerinden erişilebilir ve HTTP (SSL olmayan) bağlantıları reddeder.
Yetkilendirme sunucusu, yüklü uygulamalar için aşağıdaki sorgu dizesi parametrelerini destekler:
| Parametreler | |||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
client_id |
Zorunlu
Uygulamanızın istemci kimliği. Bu değeri Cloud Console Clients pagebölümünde bulabilirsiniz. |
||||||||||||||||||
redirect_uri |
Zorunlu
Google'ın yetkilendirme sunucusunun uygulamanıza nasıl yanıt göndereceğini belirler. Yüklü uygulamalar için çeşitli yönlendirme seçenekleri mevcuttur ve yetkilendirme kimlik bilgilerinizi belirli bir yönlendirme yöntemini göz önünde bulundurarak ayarlamış olursunuz. Değer, istemcinizin Cloud Console
Clients pagebölümünde yapılandırdığınız OAuth 2.0 istemcisinin yetkili yönlendirme URI'lerinden biriyle tam olarak eşleşmelidir. Bu değer yetkili bir URI ile eşleşmezse Tabloda, her yöntem için uygun
|
||||||||||||||||||
response_type |
Zorunlu
Google OAuth 2.0 uç noktasının yetkilendirme kodu döndürüp döndürmeyeceğini belirler. Yüklü uygulamalar için parametre değerini |
||||||||||||||||||
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. 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 orantı vardır. YouTube Analytics API'si aşağıdaki kapsamları kullanır:
YouTube Raporlama API'si 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. |
||||||||||||||||||
code_challenge |
Önerilen
Yetkilendirme kodu değişimi sırasında sunucu tarafı sorgulaması olarak kullanılacak kodlanmış bir |
||||||||||||||||||
code_challenge_method |
Önerilen
Yetkilendirme kodu değişimi sırasında kullanılacak bir |
||||||||||||||||||
state |
Önerilen
Uygulamanızın, yetkilendirme isteğiniz ile yetkilendirme sunucusunun yanıtı arasındaki durumu korumak için kullandığı dize değerini belirtir.
Kullanıcı, uygulamanızın erişim isteğini onayladıktan veya reddettikten sonra sunucu, URL parça tanımlayıcısında ( Bu parametreyi, kullanıcıyı uygulamanızdaki doğru kaynağa yönlendirme, tek kullanımlık rastgele sayılar gönderme ve siteler arası istek sahteciliğini azaltma gibi çeşitli amaçlarla kullanabilirsiniz. |
||||||||||||||||||
login_hint |
İsteğe bağlı
Uygulamanız hangi kullanıcının kimliğini doğrulamaya çalıştığını biliyorsa Google kimlik doğrulama sunucusuna ipucu vermek için bu parametreyi kullanabilir. Sunucu, oturum açma formundaki e-posta alanını önceden doldurarak veya uygun çoklu oturum açma oturumunu seçerek oturum açma akışını basitleştirmek için ipucunu kullanır. Parametre değerini, kullanıcının Google kimliğine eşdeğer olan bir e-posta adresine veya |
||||||||||||||||||
Örnek yetkilendirme URL'leri
Aşağıdaki sekmelerde, farklı yönlendirme URI'si seçenekleri için örnek yetkilendirme URL'leri gösterilmektedir.
Her URL, kullanıcının YouTube Analytics raporlarını almasına izin veren bir kapsam için erişim isteğinde bulunur.URL'ler, redirect_uri parametresinin değeri dışında tamamen aynıdır. URL'ler ayrıca gerekli response_type ve client_id parametrelerinin yanı sıra isteğe bağlı state parametresini de içerir. Her URL, okunabilirliği artırmak için satır sonları ve boşluklar içerir.
Özel URI şeması
https://accounts.google.com/o/oauth2/v2/auth? scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fyt-analytics.readonly& response_type=code& state=security_token%3D138r5719ru3e1%26url%3Dhttps%3A%2F%2Foauth2.example.com%2Ftoken& redirect_uri=com.example.app%3A/oauth2redirect& client_id=client_id
Loopback IP adresi
https://accounts.google.com/o/oauth2/v2/auth? scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fyt-analytics.readonly& response_type=code& state=security_token%3D138r5719ru3e1%26url%3Dhttps%3A%2F%2Foauth2.example.com%2Ftoken& redirect_uri=http%3A//127.0.0.1%3A9004& client_id=client_id
3. Adım: Google, kullanıcıdan onay ister.
Bu adımda, kullanıcı uygulamanıza istenen erişimi verip vermeyeceğine karar verir. Bu aşamada Google, uygulamanızın adını ve kullanıcının yetkilendirme kimlik bilgileriyle erişim izni istediği Google API hizmetlerini ve verilecek erişim kapsamlarının özetini gösteren bir onay penceresi görüntüler. Kullanıcı daha sonra uygulamanız tarafından istenen bir veya daha fazla kapsama erişim izni verebilir veya isteği reddedebilir.
Bu aşamada uygulamanızın herhangi bir şey yapmasına gerek yok, çünkü erişim izni verilip verilmediğini belirten Google'ın OAuth 2.0 sunucusundan gelecek yanıtı bekliyor. Bu yanıt bir sonraki adımda açıklanmaktadır.
Hatalar
Google'ın OAuth 2.0 yetkilendirme uç noktasına yapılan istekler, beklenen kimlik doğrulama ve yetkilendirme akışları yerine kullanıcıya yönelik hata mesajları gösterebilir. Sık karşılaşılan hata kodları ve önerilen çözümler şunlardır:
admin_policy_enforced
Google Hesabı, Google Workspace yöneticisinin politikaları nedeniyle istenen bir veya daha fazla kapsamı yetkilendiremiyor. Yöneticinin, OAuth istemci kimliğinize açıkça erişim izni verilene kadar tüm kapsamlara veya hassas ve kısıtlı kapsamlara erişimi nasıl kısıtlayabileceği hakkında daha fazla bilgi için Google Workspace Yönetici yardım makalesi Hangi üçüncü taraf ve dahili uygulamaların Google Workspace verilerine erişebileceğini kontrol etme bölümüne bakın.
disallowed_useragent
Yetkilendirme uç noktası, Google'ın OAuth 2.0 Politikaları tarafından izin verilmeyen gömülü bir kullanıcı aracısı içinde görüntülenir.
iOS ve macOS geliştiricileri, yetkilendirme isteklerini açarken bu hatayla karşılaşabilirler.WKWebView .
Geliştiriciler bunun yerine iOS için Google Girişi veya OpenID Vakfı'nın iOS için AppAuth gibi iOS kütüphanelerini kullanmalıdır.
Web geliştiricileri, bir iOS veya macOS uygulaması yerleşik bir kullanıcı aracısında genel bir web bağlantısı açtığında ve kullanıcı sitenizden Google'ın OAuth 2.0 yetkilendirme uç noktasına gittiğinde bu hatayla karşılaşabilir. Geliştiriciler, genel bağlantıların işletim sisteminin varsayılan bağlantı işleyicisinde açılmasına izin vermelidir; bu, her ikisini de içerir.Evrensel Bağlantılar İşleyiciler veya varsayılan tarayıcı uygulaması.SFSafariViewController Kütüphane de desteklenen bir seçenektir.
org_internal
İstekteki OAuth istemci kimliği, belirli bir Google Cloud Kuruluşu'ndaki Google Hesaplarına erişimi sınırlayan bir projenin parçasıdır. Bu yapılandırma seçeneği hakkında daha fazla bilgi için, OAuth onay ekranınızı ayarlama yardım makalesindeki Kullanıcı türü bölümüne bakın.
deleted_client
İstekte kullanılan OAuth istemcisi silindi. Silme işlemi manuel veya otomatik olarak gerçekleşebilir.kullanılmayan müşteriler . Silinen istemciler, silinme tarihinden itibaren 30 gün içinde geri yüklenebilir. Daha fazla bilgi edinin .
invalid_grant
Eğer kod doğrulayıcı ve meydan okuma kullanıyorsanız, code_callenge parametresi geçersiz veya eksik. code_challenge parametresinin doğru ayarlandığından emin olun.
Erişim jetonu yenilenirken jetonun süresi dolmuş veya jeton geçersiz kılınmış olabilir. Kullanıcının kimliğini tekrar doğrulayın ve yeni jetonlar almak için kullanıcı izni isteyin. Bu hatayı görmeye devam ediyorsanız uygulamanızın doğru şekilde yapılandırıldığından ve isteğinizde doğru jetonları ve parametreleri kullandığınızdan emin olun. Aksi takdirde, kullanıcı hesabı silinmiş veya devre dışı bırakılmış olabilir.
redirect_uri_mismatch
Yetkilendirme isteğinde iletilen redirect_uri, OAuth istemci kimliği için yetkilendirilmiş bir yönlendirme URI'siyle eşleşmiyor. Google Cloud Console
Clients pagebölümündeki yetkilendirilmiş yönlendirme URI'lerini inceleyin.
Geçirilen redirect_uri, müşteri türü için geçersiz olabilir.
redirect_uri parametresi, kullanımdan kaldırılmış ve artık desteklenmeyen bant dışı OAuth (OOB) akışını ifade edebilir. Entegrasyonunuzu güncellemek için taşıma kılavuzuna bakın.
invalid_request
Yaptığınız istekte bir hata oluştu. Bunun birkaç nedeni olabilir:
- İstek doğru şekilde biçimlendirilmemiş
- İstek, gerekli parametreleri içermiyordu
- İstek, Google'ın desteklemediği bir yetkilendirme yöntemi kullanıyor. OAuth entegrasyonunuzun önerilen bir entegrasyon yöntemi kullandığını doğrulayın.
- Yönlendirme URI'si için desteklenmeyen bir özel şema kullanıldı. Özel URI şeması, Android veya Chrome uygulamalarında desteklenmiyor hata mesajını görüyorsanız özel URI şeması alternatifleri hakkında daha fazla bilgi edinin.
4. adım: OAuth 2.0 sunucu yanıtını işleyin
Uygulamanızın yetkilendirme yanıtını alma şekli, kullandığı yönlendirme URI şemasına bağlıdır. Şemadan bağımsız olarak yanıtta yetkilendirme kodu (code) veya hata (error) bulunur. Örneğin, error=access_denied, kullanıcının isteği reddettiğini gösterir.
Kullanıcı uygulamanıza erişim izni verirse yetkilendirme kodunu bir erişim jetonu ve yenileme jetonu ile değiştirebilirsiniz. Bu işlem, sonraki adımda açıklanmıştır.
5. adım: Yetkilendirme kodunu yenileme ve erişim jetonlarıyla değiştirin
Yetkilendirme kodunu erişim jetonuyla değiştirmek için https://oauth2.googleapis.com/token uç noktasını çağırın ve aşağıdaki parametreleri ayarlayın:
| Alanlar | |
|---|---|
client_id |
Cloud Console Clients page. |
client_secret |
İsteğe bağlı
Cloud Console Clients pageadresinden alınan istemci gizli anahtarı. |
code |
İlk istekten döndürülen yetkilendirme kodu. |
code_verifier |
1. adımda oluşturduğunuz kod doğrulayıcı. |
grant_type |
OAuth 2.0 spesifikasyonunda tanımlandığı gibi bu alanın değeri authorization_code olarak ayarlanmalıdır. |
redirect_uri |
Belirtilen client_id için Cloud Console
Clients page bölümünde projeniz için listelenen yönlendirme URI'lerinden biri. |
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 code=4/P7q7W91a-oMsCeLvIaQm6bTrgtp7& client_id=your_client_id& redirect_uri=http://127.0.0.1:9004& grant_type=authorization_code
Google, kısa süreli bir erişim jetonu ve bir yenileme jetonu içeren bir JSON nesnesi döndürerek bu isteğe yanıt verir.
Yanıtta 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). |
id_token |
Not: Bu özellik yalnızca isteğinizde openid, profile veya email gibi bir kimlik kapsamı varsa döndürülür. Değer, kullanıcıyla ilgili dijital olarak imzalanmış kimlik bilgilerini içeren bir JSON Web Token'dır (JWT). |
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. Yüklü uygulamalar için her zaman yenileme jetonlarının 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ü. Şu anda bu alanın değeri her zaman Bearer olarak ayarlanır. |
Aşağıdaki snippet'te örnek bir yanıt gösterilmektedir:
{ "access_token": "1/fFAGRNJru1FTz70BzhT3Zg", "expires_in": 3920, "token_type": "Bearer", "scope": "https://www.googleapis.com/auth/yt-analytics.readonly https://www.googleapis.com/auth/calendar.readonly", "refresh_token": "1//xEoDL4iW3cxlI7yDbSRFYNG01kVKM2C-259HOF2aQbI" }
6. adım: Kullanıcıların hangi kapsamları verdiğini kontrol edin
Birden fazla izin (kapsam) istediğinizde kullanıcılar uygulamanıza hepsine erişim izni vermeyebilir. Uygulamanız, hangi kapsamların gerçekten verildiğini doğrulamalı ve bazı izinlerin reddedildiği durumları sorunsuz bir şekilde ele almalıdır. Bu genellikle reddedilen kapsamları kullanan özelliklerin devre dışı bırakılmasıyla yapılır.
Ancak istisnalar bulunmaktadır. Google Workspace Enterprise uygulamaları, alan genelinde yetki devri olan veya Güvenilir olarak işaretlenen uygulamalar, ayrıntılı izinler kullanıcı rızası ekranını atlar. Bu uygulamalarda kullanıcılar ayrıntılı izin onay ekranını görmez. Bunun yerine, uygulamanız istenen tüm kapsamları veya hiçbirini almaz.
Daha ayrıntılı bilgi için Ayrıntılı izinleri yönetme başlıklı makaleyi inceleyin.
Kullanıcının uygulamanıza belirli bir kapsam için erişim izni verip vermediğini kontrol etmek için erişim jetonu yanıtındaki scope alanını inceleyin. access_token tarafından verilen erişim kapsamları, boşlukla ayrılmış, büyük/küçük harfe duyarlı dizeler listesi olarak ifade edilir.
Örneğin, aşağıdaki örnek erişim jetonu yanıtı, kullanıcının uygulamanıza salt okunur Drive etkinliği ve Takvim etkinlikleri izinleri için erişim izni verdiğini gösterir:
{ "access_token": "1/fFAGRNJru1FTz70BzhT3Zg", "expires_in": 3920, "token_type": "Bearer", "scope": "https://www.googleapis.com/auth/yt-analytics.readonly https://www.googleapis.com/auth/calendar.readonly", "refresh_token": "1//xEoDL4iW3cxlI7yDbSRFYNG01kVKM2C-259HOF2aQbI" }
Google API'lerini çağırma
Uygulamanız bir erişim belirteci aldıktan sonra, API tarafından gerekli olan erişim kapsamları verilmişse, bu belirteci kullanarak belirli bir kullanıcı hesabı adına Google API'sine çağrılar yapabilirsiniz. Bunu yapmak için, erişim belirtecini bir access_token sorgu parametresi veya bir Authorization HTTP başlığı Bearer değeri ekleyerek API'ye yapılan bir isteğe dahil edin. Mümkün olduğunda HTTP başlığı tercih edilir, çünkü sorgu dizeleri genellikle sunucu günlüklerinde görünür. Çoğu durumda, Google API'lerine yapacağınız çağrıları ayarlamak için bir istemci kitaplığı kullanabilirsiniz (örneğin, YouTube Analytics API'sini çağırırken).
YouTube Analytics API'sinin hizmet hesabı akışını desteklemediğini lütfen unutmayın. YouTube Raporlama API'si, yalnızca plak şirketleri ve film stüdyoları gibi birden fazla YouTube kanalına sahip olan ve bunları yöneten YouTube içerik sahipleri için hizmet hesaplarını destekler.
Tüm Google API'lerini deneyebilir ve kapsamlarını OAuth 2.0 Playground adresinde görüntüleyebilirsiniz.
HTTP GET örnekleri
Bir çağrı
reports.query uç noktayı (YouTube Analytics API'sini) kullanarakAuthorization: Bearer HTTP başlığı aşağıdaki gibi görünebilir. Erişim belirtecinizi kendiniz belirtmeniz gerektiğini unutmayın:
GET /youtube/analytics/v1/reports?ids=channel%3D%3DMINE&start-date=2016-05-01&end-date=2016-06-30&metrics=views HTTP/1.1 Host: www.googleapis.com Authorization: Bearer access_token
İşte kimliği doğrulanmış kullanıcı için access_token sorgu dizesi parametresi kullanılarak aynı API'ye yapılan çağrı:
GET https://www.googleapis.com/youtube/analytics/v1/reports?access_token=access_token&ids=channel%3D%3DMINE&start-date=2016-05-01&end-date=2016-06-30&metrics=views
curl örnek
Bu komutları curl komut satırı uygulamasıyla test edebilirsiniz. İşte HTTP başlık seçeneğini (tercih edilen yöntem) kullanan bir örnek:
curl -H "Authorization: Bearer access_token" https://www.googleapis.com/youtube/analytics/v1/reports?ids=channel%3D%3DMINE&start-date=2016-05-01&end-date=2016-06-30&metrics=views
Veya alternatif olarak, sorgu dizesi parametre seçeneği:
curl https://www.googleapis.com/youtube/analytics/v1/reports?access_token=access_token&ids=channel%3D%3DMINE&start-date=2016-05-01&end-date=2016-06-30&metrics=views
Erişim belirtecini yenile
Erişim belirteçleri periyodik olarak sona erer ve ilgili API isteği için geçersiz kimlik bilgileri haline gelir. Kullanıcıyla ilişkili kapsamlar için çevrimdışı erişim talep ettiyseniz, kullanıcıdan izin istemeden (kullanıcı mevcut olmasa bile) erişim belirtecini yenileyebilirsiniz.
Erişim belirtecini yenilemek için uygulamanız, aşağıdaki parametreleri içeren bir HTTPS POST isteğini Google'ın yetkilendirme sunucusuna (https://oauth2.googleapis.com/token) gönderir:
| Alanlar | |
|---|---|
client_id |
API Consoleadresinden elde edilen istemci kimliği. |
client_secret |
İsteğe bağlı
API Consoleadresinden elde edilen istemci gizli anahtarı.
( |
grant_type |
GibiOAuth 2.0 spesifikasyonunda tanımlanmıştır Bu alanın değeri şu şekilde ayarlanmalıdır:refresh_token. |
refresh_token |
Yetkilendirme kodu değişiminden dönen yenileme belirteci. |
Aşağıdaki kod parçası örnek bir isteği göstermektedir:
POST /token HTTP/1.1 Host: oauth2.googleapis.com Content-Type: application/x-www-form-urlencoded client_id=your_client_id& refresh_token=refresh_token& grant_type=refresh_token
Kullanıcı uygulamaya verilen erişimi iptal etmediği sürece, token sunucusu yeni bir erişim tokeni içeren bir JSON nesnesi döndürür. Aşağıdaki kısa kod parçası örnek bir yanıtı göstermektedir:
{ "access_token": "1/fFAGRNJru1FTz70BzhT3Zg", "expires_in": 3920, "scope": "https://www.googleapis.com/auth/drive.metadata.readonly https://www.googleapis.com/auth/calendar.readonly", "token_type": "Bearer" }
Yenileme token'larının sayısında sınırlamalar olduğunu unutmayın; her istemci/kullanıcı kombinasyonu için bir sınır ve tüm istemciler genelinde her kullanıcı için başka bir sınır bulunmaktadır. Yenileme belirteçlerini uzun süreli depolamaya kaydetmeli ve geçerlilikleri devam ettiği sürece kullanmaya devam etmelisiniz. Uygulamanız çok fazla yenileme belirteci talep ederse, bu sınırlara takılabilir; bu durumda eski yenileme belirteçleri çalışmayı durduracaktır.
Jeton iptali
Bazı durumlarda kullanıcı, bir uygulamaya verilen erişimi iptal etmek isteyebilir. Kullanıcı, Hesap Ayarları adresini ziyaret ederek erişimi iptal edebilir. BakınızHesabınıza erişim izni olan üçüncü taraf siteler ve uygulamalar bölümündeki "Site veya uygulama erişimini kaldır" kısmını kaldırın. Daha fazla bilgi için destek belgesine bakınız.
Bir uygulamanın kendisine verilen erişimi programatik olarak iptal etmesi de mümkündür. Programatik iptal, kullanıcının aboneliğini iptal etmesi, bir uygulamayı kaldırması veya bir uygulamanın ihtiyaç duyduğu API kaynaklarının önemli ölçüde değişmesi durumlarında önemlidir. Başka bir deyişle, kaldırma işleminin bir parçası olarak, uygulamaya daha önce verilmiş olan izinlerin kaldırıldığından emin olmak için bir API isteği gönderilebilir.
Bir belirteci programatik olarak iptal etmek için, uygulamanız https://oauth2.googleapis.com/revoke adresine bir istek gönderir ve belirteci parametre olarak ekler:
curl -d -X -POST --header "Content-type:application/x-www-form-urlencoded" \
https://oauth2.googleapis.com/revoke?token={token}Token, erişim tokenı veya yenileme tokenı olabilir. Eğer token bir erişim tokenı ise ve buna karşılık gelen bir yenileme tokenı da varsa, yenileme tokenı da iptal edilecektir.
İptal işlemi başarıyla tamamlanırsa, yanıtın HTTP durum kodu 200 olur. Hata durumlarında, hata koduyla birlikte bir HTTP durum kodu 400 döndürülür.
Uygulama yönlendirme yöntemleri
Özel URI şeması
Özel URI şemaları, uygulamanızı açmak için özel olarak tanımlanmış bir şema kullanan bir derin bağlantı biçimidir.
Chrome uygulamalarında özel URI şemaları kullanmaya alternatif
Yönlendirme URI'sine olan ihtiyacı ortadan kaldırarak OAuth 2.0 yanıtını doğrudan uygulamanıza ileten Chrome Kimlik API'sini kullanın.
Loopback IP adresi (macOS, Linux, Windows masaüstü)
Bu URL üzerinden yetkilendirme kodunu almak için uygulamanızın yerel web sunucusunda dinleme modunda olması gerekir. Bu, birçok platformda mümkün, ancak hepsinde değil. Ancak, platformunuz bunu destekliyorsa, yetkilendirme kodunu almak için önerilen yöntem budur.
Uygulamanız yetkilendirme yanıtını aldığında, en iyi kullanılabilirlik için kullanıcıya tarayıcıyı kapatıp uygulamanıza geri dönmesini söyleyen bir HTML sayfası görüntüleyerek yanıt vermelidir.
| Önerilen kullanım | macOS, Linux ve Windows masaüstü (ancak Evrensel Windows Platformu değil) uygulamaları |
| Form değerleri | Uygulama türünü Masaüstü uygulaması olarak ayarlayın. |
Manuel kopyalama/yapıştırma (desteği sonlandırıldı)
Uygulamalarınızı koruma
Chrome için uygulama sahipliğini doğrulama
Uygulama taklidi riskini azaltmak için uygulamanızın sahipliğini doğrulayabilirsiniz.
Doğrulama sürecini tamamlamak için Chrome Web Mağazası geliştirici hesabınızı kullanırsınız. Başarılı bir doğrulama için aşağıdaki koşulların karşılanması gerekir:
- Chrome Web Mağazası Geliştirici Kontrol Paneli'nde, doğrulamasını tamamladığınız Chrome uzantısı OAuth istemcisiyle aynı öğe kimliğine sahip kayıtlı bir öğeniz olmalıdır.
- Chrome Web Mağazası öğesinin yayıncısı olmanız gerekir. Chrome Web Mağazası Geliştirici Kontrol Paneli'nde erişim yönetimi hakkında daha fazla bilgi edinin.
Chrome uzantısı istemcisinin Uygulama Sahipliğini Doğrula bölümünde, doğrulama sürecini tamamlamak için Sahipliği Doğrula düğmesini tıklayın.
Not: Hesabınıza erişim izni verdikten sonra doğrulama işlemini tamamlamadan önce birkaç dakika bekleyin.
Doğrulama başarılı olursa doğrulama sürecinin başarıyla tamamlandığını onaylayan bir bildirim gösterilir. Aksi takdirde bir hata istemi gösterilir.
Başarısız olan bir doğrulamayı düzeltmek için aşağıdakileri deneyin:
- Chrome Web Mağazası Geliştirici Kontrol Paneli'nde, doğrulamasını tamamladığınız Chrome uzantısı OAuth istemcisiyle aynı öğe kimliğine sahip kayıtlı bir öğe olduğundan emin olun.
- Uygulamanın yayıncısı olduğunuzdan emin olun. Yani uygulamanın bireysel yayıncısı veya uygulamanın grup yayıncısının bir üyesi olmanız gerekir. Chrome Web Mağazası Geliştirici Kontrol Paneli'nde erişim yönetimi hakkında daha fazla bilgi edinin.
- Grup yayıncı listenizi yeni güncellediyseniz grup yayıncı üyeliği listesinin Chrome Web Mağazası Geliştirici Kontrol Paneli'nde senkronize edildiğini doğrulayın. Yayıncı üyelik listenizi senkronize etme hakkında daha fazla bilgi edinin.
Uygulama Kontrolü (yalnızca iOS)
Uygulama Kontrolü özelliği, Google OAuth 2.0 uç noktalarına yapılan isteklerin orijinal uygulamalarınızdan geldiğini doğrulamak için Apple'ın App Attest hizmetini kullanarak iOS uygulamalarınızı yetkisiz kullanıma karşı korumanıza yardımcı olur. Bu, uygulama kimliğine bürünme riskini azaltmaya yardımcı olur.
iOS istemciniz için Uygulama Kontrolü'nü etkinleştirme
iOS istemcinizde App Check'i başarıyla etkinleştirmek için aşağıdaki koşulların karşılanması gerekir:- iOS istemciniz için bir ekip kimliği belirtmeniz gerekir.
- Birden fazla uygulamaya çözümlenebileceğinden paket kimliğinizde joker karakter kullanmamalısınız. Bu nedenle, paket kimliği yıldız (*) sembolünü içermemelidir.
Uygulama Kontrolü'nü etkinleştirdikten sonra, OAuth istemcisinin düzenleme görünümünde istemcinizden gelen OAuth istekleriyle ilgili metrikleri görmeye başlarsınız. Uygulama Kontrolü'nü zorunlu kılana kadar doğrulanmamış kaynaklardan gelen istekler engellenmez. Metrik izleme sayfasındaki bilgiler, yaptırım uygulamaya ne zaman başlayacağınızı belirlemenize yardımcı olabilir.
iOS uygulamanızda Uygulama Kontrolü'nü etkinleştirirken Uygulama Kontrolü özelliğiyle ilgili hatalar görebilirsiniz. Bu hataları düzeltmek için aşağıdakileri deneyin:
- Belirttiğiniz paket kimliğinin ve takım kimliğinin geçerli olduğunu doğrulayın.
- Paket kimliği için joker karakter kullanmadığınızı doğrulayın.
iOS istemciniz için App Check'i zorunlu kılma
Uygulamanız için Uygulama Kontrolü'nü etkinleştirmek, tanınmayan istekleri otomatik olarak engellemez. Bu korumayı zorunlu kılmak için iOS istemcinizin düzenleme görünümüne gidin. Burada, sayfanın sağ tarafındaki iOS için Google Kimliği bölümünde Uygulama Kontrolü metriklerini görürsünüz. Metrikler aşağıdaki bilgileri içerir:- Doğrulanmış istek sayısı: Geçerli bir Uygulama Kontrolü jetonu bulunan istekler. App Check zorunluluğunu etkinleştirdikten sonra yalnızca bu kategorideki istekler başarılı olur.
- Doğrulanmamış istek sayısı: güncel olmayabilecek istemci istekleri - Uygulama Kontrolü jetonu bulunmayan istekler. Bu istekler, Uygulama Kontrolü uygulamasının bulunmadığı uygulamanızın eski bir sürümünden gelmiş olabilir.
- Doğrulanmamış istek sayısı: bilinmeyen kaynak istekleri - Uygulama Kontrolü jetonu bulunmayan ve uygulamanızdan geldiği kesin olmayan istekler.
- Doğrulanmamış istek sayısı: geçersiz istekler - Geçersiz bir Uygulama Kontrolü jetonu bulunan (uygulamanızın kimliğine bürünmeye çalışan asılsız bir istemciden veya emüle edilmiş ortamlardan gelebilecek) istekler.
App Check'i zorunlu kılmak için ENFORCE düğmesini tıklayın ve seçiminizi onaylayın. Zorunlu kılma etkinleştirildikten sonra, istemcinizden gelen tüm doğrulanmamış istekler reddedilir.
Not: Yaptırım etkinleştirildikten sonra değişikliklerin geçerlilik kazanması 15 dakikayı bulabilir.
iOS istemcinizde Uygulama Kontrolü'nü zorunlu kılmayı kaldırma
Uygulamanız için Uygulama Kontrolü zorunluluğu kaldırılırsa zorunlu kılma durdurulur ve doğrulanmamış istekler de dahil olmak üzere istemcinizden Google OAuth 2.0 uç noktalarına yapılan tüm isteklere izin verilir.
iOS istemciniz için uygulama kontrolünü devre dışı bırakmak üzere iOS istemcisinin düzenleme görünümüne gidin ve UNENFORCE (Uygulama kontrolünü devre dışı bırak) düğmesini tıklayıp seçiminizi onaylayın.
Not: Uygulama Kontrolü'nün zorunlu kılınması kaldırıldıktan sonra değişikliklerin geçerlilik kazanması 15 dakika kadar sürebilir.
iOS istemciniz için Uygulama Kontrolü'nü devre dışı bırakma
Uygulamanız için Uygulama Kontrolü'nü devre dışı bırakmak tüm Uygulama Kontrolü izleme ve zorunlu kılma işlemlerini durdurur. İstemcinizle ilgili metrikleri izlemeye devam edebilmek için Uygulama Kontrolü'nü zorunlu kılmamayı tercih edebilirsiniz.
iOS istemcinizde Uygulama Kontrolü'nü devre dışı bırakmak için iOS istemcisinin düzenleme görünümüne gidin ve Firebase Uygulama Kontrolü ile OAuth istemcinizi kötüye kullanıma karşı koruyun açma/kapatma düğmesini kapatın.
Not: Uygulama Kontrolü devre dışı bırakıldıktan sonra değişikliklerin geçerlilik kazanması 15 dakika kadar sürebilir.
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ızın verilerine erişmesine izin vermesini sağlar. İ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, verilerin tek seferlik aktarılması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.
Daha fazla bilgi
IETF Best Current Practice OAuth 2.0 for Native Apps (Yerel Uygulamalar İçin OAuth 2.0) burada belgelenen en iyi uygulamaların çoğunu belirler.
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 karar vererek bu bilgileri kullanarak işlem yapabilirsiniz.
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.