Mobil ve Masaüstü Uygulamaları için OAuth 2.0

Bu dokümanda, telefon, tablet ve bilgisayar gibi cihazlara yüklenen uygulamaların YouTube Data API'ye erişim yetkisi vermek için Google'ın OAuth 2.0 uç noktalarını nasıl kullandığı açıklanmaktadı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 bir kanalın YouTube verilerini alma izni almak için OAuth 2.0'ı kullanabilir.

Yüklenen uygulamalar ayrı cihazlara dağıtılır ve bu uygulamaların gizlilik sağlayamayacağı varsayılır. Kullanıcı uygulamadayken veya uygulama arka planda çalışırken Google API'lerine erişebilirler.

Bu yetkilendirme akışı, web sunucusu uygulamaları için kullanılan akışa benzer. Bu iki yöntem arasındaki temel fark, yüklenen uygulamaların Google'ın yetkilendirme sunucusundan gelen yanıtları işlemek için sistem tarayıcısını açması ve yerel bir yönlendirme URI'si sağlamasıdır.

Alternatifler

Mobil uygulamalar için Android veya iOS'te Google ile oturum açma özelliğini tercih edebilirsiniz. Google Sign-in istemci kitaplıkları, kimlik doğrulama ve kullanıcı yetkilendirmesini yönetir. Bu kitaplıkların uygulanması, burada açıklanan alt düzey protokolden daha basit olabilir.

Sistem tarayıcısını desteklemeyen veya sınırlı giriş özelliklerine sahip cihazlarda (ör. TV'ler, oyun konsolları, kameralar veya yazıcılar) çalışan uygulamalar için TV'ler ve Cihazlar için OAuth 2.0 veya TV'lerde ve Sınırlı Giriş Cihazlarında Oturum Açma başlıklı makalelere göz atın.

Kitaplıklar ve örnekler

Bu belgede açıklanan OAuth 2.0 akışını uygulamanıza yardımcı olması için aşağıdaki kitaplıkları ve örnekleri öneririz:

Ön koşullar

Projeniz için API'leri etkinleştirme

Google API'lerini çağıran tüm uygulamaların bu API'leri API Console'te etkinleştirmesi gerekir.

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

  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. Uygulamanızın kullanacağı diğer API'leri bulup bunları da etkinleştirin.

Yetkilendirme kimlik bilgileri oluşturma

Google API'lerine erişmek için OAuth 2.0 kullanan tüm uygulamaların, Google'ın OAuth 2.0 sunucusunda uygulamayı tanımlayan yetkilendirme kimlik bilgilerine sahip olması gerekir. Aşağıdaki adımlarda, projeniz için kimlik bilgilerinin nasıl oluşturulacağı açıklanmaktadır. Ardından, uygulamalarınız bu proje için etkinleştirdiğiniz API'lere erişmek üzere 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. 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 istemcinizi adlandırın ve formdaki diğer alanları uygun şekilde ayarlayın.
Yapay Zeka
  1. Android uygulama türünü seçin.
  2. OAuth istemcisi için bir ad girin. Bu ad, müşteriyi tanımlamak için projenizde gösterilir. Credentials page
  3. Android uygulamanızın paket adını girin. Bu değer, uygulama manifest dosyanızdaki <manifest> öğesinin package özelliğinde tanımlanır.
  4. Uygulama dağıtımının SHA-1 imza sertifikası parmak izini girin.
    • Uygulamanız Google Play'den uygulama imzalamayı kullanıyorsa Play Console'un uygulama imzalama sayfasından SHA-1 parmak izini kopyalayın.
    • Kendi anahtar deponuzu ve imzalama anahtarlarınızı yönetiyorsanız sertifika bilgilerini kullanıcı tarafından okunabilir bir biçimde yazdırmak için Java'ya dahil olan keytool yardımcı programını kullanın. keytool çıkışının Certificate fingerprints bölümündeki SHA1 değerini kopyalayın. Daha fazla bilgi için Android için Google API'leri dokümanlarında yer alan İstemcinizin Kimliğini Doğrulama bölümüne bakın.
  5. (İsteğe bağlı) Android uygulamanızın sahipliğini doğrulayın.
  6. Oluştur'u tıklayın.
iOS
  1. iOS uygulama türünü seçin.
  2. OAuth istemcisi için bir ad girin. Bu ad, müşteriyi tanımlamak için projenizde gösterilir. Credentials page
  3. Uygulamanızın paket kimliğini girin. Paket kimliği, uygulamanızın bilgi mülkü listesi kaynak dosyasında (info.plist) bulunan CFBundleIdentifier anahtarının değeridir. Değer genellikle Xcode proje düzenleyicisinin Genel bölmesinde veya İmzalama ve Özellikler bölmesinde gösterilir. Paket kimliği, Apple'ın App Store Connect sitesinde uygulamanın Uygulama Bilgileri sayfasındaki Genel Bilgiler bölümünde de gösterilir.

    Uygulama Kontrolü özelliğini kullanıyorsanız bunu değiştiremeyeceğiniz için uygulamanız için doğru paket kimliğini kullandığınızdan emin olun.

  4. (İsteğe bağlı)

    Uygulama, Apple'ın App Store'unda yayınlanmışsa uygulamanızın App Store kimliğini girin. Mağaza kimliği, her Apple App Store URL'sine dahil edilmiş sayısal bir dizedir.

    1. iOS veya iPadOS cihazınızda Apple App Store uygulamasını açın.
    2. Uygulamanızı arayın.
    3. Paylaş düğmesini (kare ve yukarı ok simgesi) seçin.
    4. Bağlantıyı kopyala'yı seçin.
    5. Bağlantıyı bir metin düzenleyicide yapıştırın. App Store kimliği, URL'nin son kısmıdır.

      Örnek: https://apps.apple.com/app/google/id284815942

  5. (İsteğe bağlı)

    Ekip kimliğinizi girin. Daha fazla bilgi için Apple Developer Account belgelerindeki Ekip kimliğinizi bulma bölümünü inceleyin.

    Not: İstemciniz için Uygulama Kontrolü'nü etkinleştiriyorsanız Ekip Kimliği alanı zorunludur.
  6. (İsteğe bağlı)

    iOS uygulamanız için Uygulama Kontrolü'nü etkinleştirin. Uygulama Kontrolü'nü etkinleştirdiğinizde, OAuth istemcinizden gelen OAuth 2.0 isteklerinin gerçek olduğundan ve uygulamanızdan geldiğinden emin olmak için Apple'ın App Attest hizmeti kullanılır. Bu, uygulama kimliğine bürünme riskini azaltmaya yardımcı olur. iOS uygulamanız için Uygulama Kontrolü'nü etkinleştirme hakkında daha fazla bilgi edinin.

  7. Oluştur'u tıklayın.
UWP
  1. Evrensel Windows Platformu uygulama türünü seçin.
  2. OAuth istemcisi için bir ad girin. Bu ad, müşteriyi tanımlamak için projenizde gösterilir. Credentials page
  3. Uygulamanızın 12 karakterli Microsoft Store kimliğini girin. Bu değeri, Microsoft İş Ortağı Merkezi'ndeki Uygulama yönetimi bölümündeki Uygulama kimliği sayfasında bulabilirsiniz.
  4. Oluştur'u tıklayın.

UWP uygulamaları için özel URI şeması 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ğlarken kullanıcıların da uygulamanıza verdikleri erişim miktarını kontrol etmelerini sağlar. Bu nedenle, istenen kapsamların 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şmek için izin alması gereken kapsamları belirlemenizi öneririz.

YouTube Data API v3 aşağıdaki kapsamları kullanı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 listesini içerir.

OAuth 2.0 erişim jetonları alma

Aşağıdaki adımlarda, uygulamanızın kullanıcı adına API isteği gerçekleştirmek için kullanıcının iznini almak amacıyla Google'ın OAuth 2.0 sunucusuyla nasıl etkileşimde bulunduğu gösterilmektedir. Kullanıcı yetkilendirmesi gerektiren bir Google API isteğini yürütebilmesi için uygulamanızın bu izne sahip olması gerekir.

1. Adım: Kod doğrulayıcı ve istem oluşturun

Google, yüklü 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" adlı 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, [A-Z] / [a-z] / [0-9] / "-" / "." / "_" / "~" karakterlerini kullanan, en az 43 ve en fazla 128 karakter uzunluğunda, yüksek entropili kriptografik rastgele bir dizedir.

Kod doğrulayıcı, değeri tahmin etmeyi pratik dışı hale getirecek kadar entropi içermelidir.

Kod doğrulamasını oluşturma

Kodlu kimlik doğrulama oluşturmanın iki yöntemi desteklenir.

Kod Sorgusu Oluşturma Yöntemleri
S256 (önerilir) Kod kimlik sorgusu, kod doğrulayıcının Base64URL (doldurulmamış) kodlamalı SHA256 karmasıdır.
code_challenge = BASE64URL-ENCODE(SHA256(ASCII(code_verifier)))
plain Kod isteği, yukarıda oluşturulan kod doğrulayıcıyla aynı değerdir.
code_challenge = code_verifier

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 yetkilendirme sunucusuna istek gönderin. Bu uç nokta, etkin oturum aramasını yönetir, 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ı reddedilir.

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 şu adreste bulabilirsiniz: API Console Credentials page.

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 vardır ve yetkilendirme kimlik bilgilerinizi belirli bir yönlendirme yöntemini göz önünde bulundurarak ayarlamanız gerekir.

Değer, OAuth 2.0 istemcisinin yetkili yönlendirme URI'lerinden biriyle tam olarak eşleşmelidir. Bu URI'yi istemcinizin API Console Credentials pagebölümünde yapılandırdınız. Bu değer, yetkili bir URI ile eşleşmezse redirect_uri_mismatch hatası alırsınız.

Aşağıdaki tabloda, her yöntem için uygun redirect_uri parametre değeri gösterilmektedir:

redirect_uri değerleri
Özel URI şeması com.example.app:redirect_uri_path

veya

com.googleusercontent.apps.123:redirect_uri_path
  • com.example.app, kontrolünüz altındaki bir alanın ters DNS gösterimidir. Özel planın geçerli olması için bir dönem içermesi gerekir.
  • com.googleusercontent.apps.123, istemci kimliğinin ters DNS gösterimidir.
  • redirect_uri_path, /oauth2redirect gibi isteğe bağlı bir yol bileşenidir. Yolun tek bir eğik çizgi ile başlaması gerektiğini unutmayın. Bu, normal HTTP URL'lerinden farklıdır.
Loopback IP adresi http://127.0.0.1:port veya http://[::1]:port

İlgili loopback IP adresi için platformunuzu sorgulayın ve rastgele bir kullanılabilir bağlantı noktasında bir HTTP dinleyicisi başlatın. port değerini, uygulamanızın dinlediği gerçek bağlantı noktası numarasıyla değiştirin.

Mobil uygulamalarda loopback IP adresi yönlendirme seçeneğinin desteğinin KULLANIMDAN KALDIRILMIŞ olduğunu unutmayın.

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 code olarak ayarlayın.

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 verdikleri erişim miktarını kontrol etmelerini de sağlar. Bu nedenle, istenen kapsamların sayısı ile kullanıcı izni alma olasılığı arasında ters bir ilişki vardır.

YouTube Data API v3 aşağıdaki kapsamları kullanı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ı belgesinde, Google API'lerine erişmek için kullanabileceğiniz kapsamların tam listesi sağlanır.

code_challenge Önerilen

Yetkilendirme kodu alışverişi sırasında sunucu tarafı istem olarak kullanılacak kodlanmış bir code_verifier belirtir. Daha fazla bilgi için yukarıdaki kod oluşturma yarışması bölümüne bakın.

code_challenge_method Önerilen

Yetkilendirme kodu alışverişi sırasında kullanılacak code_verifier kodunun kodlanması için hangi yöntemin kullanıldığını belirtir. Bu parametre, yukarıda açıklanan code_challenge parametresiyle birlikte kullanılmalıdır. code_challenge içeren istekte code_challenge_method yoksa değerin varsayılan olarak plain olduğu Bu parametre için desteklenen tek değerler S256 veya plain'tır.

state Önerilen

Uygulamanızın, yetkilendirme isteğiniz ile yetkilendirme sunucusunun yanıtı arasında durumu korumak için kullandığı tüm dize değerlerini belirtir. Sunucu, kullanıcı uygulamanızın erişim isteğini onayladıktan veya reddettikten sonra redirect_uri'nin URL parça tanımlayıcısı (#) içinde name=value çifti olarak gönderdiğiniz değeri aynen döndürür.

Bu parametreyi, kullanıcıyı uygulamanızdaki doğru kaynağa yönlendirme, tek seferlik kimlikler gönderme ve siteler arası istek sahteciliğini azaltma gibi çeşitli amaçlar için kullanabilirsiniz. redirect_uri değeriniz tahmin edilebileceğinden, state değeri kullanmak gelen bir bağlantının kimlik doğrulama isteğinin sonucu olduğu konusundaki güveninizi artırabilir. Rastgele bir dize oluşturur veya bir çerezin karmasını ya da istemcinin durumunu yakalayan başka bir değeri kodlarsanız yanıtı doğrulayarak istek ve yanıtın aynı tarayıcıdan geldiğinden emin olabilir, böylece siteler arası istek sahteciliği gibi saldırılara karşı koruma sağlayabilirsiniz. state jetonunun nasıl oluşturulacağı ve onaylanacağına dair bir örnek için OpenID Connect dokümanlarına bakın.

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 Sunucusu'na ipucu vermek için bu parametreyi kullanabilir. Sunucu, oturum açma formundaki e-posta alanını önceden doldurarak veya uygun çoklu oturum 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 sub tanımlayıcısına ayarlayın.

Örnek yetkilendirme URL'leri

Aşağıdaki sekmelerde, farklı yönlendirme URI seçenekleri için örnek yetkilendirme URL'leri gösterilmektedir.

Her URL, kullanıcının YouTube verilerini almak için erişim izni veren bir kapsama erişim isteğinde bulunur.

URL'ler, redirect_uri parametresinin değeri dışında aynıdır. URL'ler, isteğe bağlı state parametresinin yanı sıra zorunlu response_type ve client_id parametrelerini de içerir. Her URL, okunaklılığı 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%2Fyoutube.force-ssl&
 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

Geri döngü IP adresi

https://accounts.google.com/o/oauth2/v2/auth?
 scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fyoutube.force-ssl&
 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 izin 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 gösteren bir izin penceresi ile birlikte, verilecek erişim kapsamlarının bir özetini gösterir. Kullanıcı, uygulamanız tarafından istenen bir veya daha fazla kapsama erişim izni vermeyi kabul edebilir ya da isteği reddedebilir.

Google'ın OAuth 2.0 sunucusundan erişim izni verilip verilmediğini belirten yanıtı beklerken uygulamanızın bu aşamada herhangi bir işlem yapması gerekmez. Bu yanıt, aşağıdaki adımda açıklanmıştı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ılara yönelik hata mesajları gösterebilir. Sık karşılaşılan hata kodları ve önerilen çözümler aşağıda listelenmiştir.

admin_policy_enforced

Google Hesabı, Google Workspace yöneticisinin politikaları nedeniyle istenen bir veya daha fazla kapsamı yetkilendiremiyor. Bir yöneticinin, OAuth istemci kimliğinize açıkça erişim izni verilene kadar tüm kapsamlara veya hassas ve kısıtlanmış kapsamlara erişimi nasıl kısıtlayabileceği hakkında daha fazla bilgi için Google Workspace Yöneticisi yardım makalesini Google Workspace verilerine hangi üçüncü taraf uygulamalarının ve dahili uygulamaların erişebileceğini yönetme inceleyin.

disallowed_useragent

Yetkilendirme uç noktası, Google'ın OAuth 2.0 Politikaları tarafından izin verilmeyen yerleşik bir kullanıcı aracısı içinde gösteriliyor.

Yapay Zeka

Android geliştiricileri, android.webkit.WebView'te yetkilendirme isteklerini açarken bu hata mesajıyla karşılaşabilir. Geliştiriciler bunun yerine Android için Google ile Oturum Açma veya OpenID Foundation'ın Android için AppAuth gibi Android kitaplıklarını kullanmalıdır.

Web geliştiricileri, bir Android uygulaması yerleşik bir kullanıcı aracısında genel bir web bağlantısı açtığında ve bir 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 işleyiciler hem Android Uygulama Bağlantıları işleyicilerini hem de varsayılan tarayıcı uygulamasını içerir. Android Özel Sekmeler kitaplığı da desteklenen bir seçenektir.

iOS

iOS ve macOS geliştiricileri, WKWebView'te yetkilendirme isteklerini açarken bu hatayla karşılaşabilir. Geliştiriciler bunun yerine iOS için Google ile oturum açma veya OpenID Foundation'ın iOS için AppAuth gibi iOS kitaplıklarını 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 bir 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 işleyiciler hem Evrensel Bağlantılar işleyicilerini hem de varsayılan tarayıcı uygulamasını içerir. SFSafariViewController kitaplığı da desteklenen bir seçenektir.

org_internal

İstekte bulunan OAuth istemci kimliği, belirli bir Google Cloud kuruluşunda 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 edinmek için OAuth izin ekranınızı ayarlama yardım makalesindeki Kullanıcı türü bölümüne bakın.

invalid_grant

Kod doğrulayıcı ve istem kullanıyorsanız code_callenge parametresi geçersiz veya eksik. code_challenge parametresinin doğru şekilde 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 jeton almak için kullanıcıdan izin 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 yetkili bir yönlendirme URI'siyle eşleşmiyor. Google API Console Credentials pagebölümündeki yetkili yönlendirme URI'lerini inceleyin.

İletilen redirect_uri, istemci türü için geçersiz olabilir.

redirect_uri parametresi, kullanımdan kaldırılmış ve artık desteklenmeyen OAuth bant dışı (OOB) akışını referans alabilir. Entegrasyonunuzu güncellemek için taşıma kılavuzunu inceleyin.

invalid_request

Gönderdiğiniz istekte bir sorun vardı. Bunun birkaç nedeni olabilir:

  • İstek doğru şekilde biçimlendirilmemiş
  • İstekte gerekli parametreler eksik
  • İstek, Google'ın desteklemediği bir yetkilendirme yöntemi kullanıyor. OAuth entegrasyonunuzun önerilen bir entegrasyon yöntemini kullandığından emin olun
  • Yönlendirme URI'si için özel bir şema kullanılıyor : Özel URI şeması Chrome uygulamalarında desteklenmiyor veya Özel URI şeması Android istemciniz için etkin değil hata mesajını görüyorsanız Chrome uygulamalarında desteklenmeyen ve Android'de varsayılan olarak devre dışı bırakılan özel bir URI şeması kullanıyorsunuz demektir. Ö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ıt, bir yetkilendirme kodu (code) veya hata (error) içerir. Örneğin, error=access_denied kullanıcının isteği reddettiğini gösterir.

Kullanıcı uygulamanıza erişim izni verirse bir sonraki adımda açıklandığı gibi yetkilendirme kodunu erişim jetonu ve yenileme jetonuyla değiştirebilirsiniz.

5. Adım: Yenileme ve erişim jetonları için yetkilendirme kodu değiş tokuşu yapın

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 API Console Credentials pageadresinden alınan istemci kimliği.
client_secret API Console Credentials 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ığı şekliyle bu alanın değeri authorization_code olarak ayarlanmalıdır.
redirect_uri Belirli bir client_id için API Consolebölümündeki projeniz için listelenen yönlendirme URI'lerinden biri Credentials page .

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&
client_secret=your_client_secret&
redirect_uri=http://127.0.0.1:9004&
grant_type=authorization_code

Google, bu isteğe kısa süreli bir erişim jetonu ve yenileme jetonu içeren bir JSON nesnesi döndürerek 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ğiniz openid, profile veya email gibi bir kimlik kapsamı içeriyorsa döndürülür. Değer, kullanıcıyla ilgili dijital olarak imzalanmış kimlik bilgilerini içeren bir JSON Web Jetonu'dur (JWT).
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, yüklü uygulamalar için 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ı dizelerin listesi olarak ifade edilir.
token_type Döndürülen jeton türü. Bu aşamada 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/youtube.force-ssl 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

Kullanıcılar, tek seferde birden fazla kapsam isteğinde bulunduğunuzda uygulamanızın istediği tüm kapsamları vermeyebilir. Uygulamanız, kullanıcı tarafından hangi kapsamların verildiğini her zaman kontrol etmeli ve ilgili özellikleri devre dışı bırakarak kapsam reddi durumlarını ele almalıdır. Daha fazla bilgi için Ayrıntılı izinleri yönetme başlıklı makaleyi inceleyin.

Kullanıcının uygulamanıza belirli bir kapsama 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 harf duyarlı dizelerin 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 izinlerine erişim izni verdiğini gösterir:

  {
    "access_token": "1/fFAGRNJru1FTz70BzhT3Zg",
    "expires_in": 3920,
    "token_type": "Bearer",
    "scope": "https://www.googleapis.com/auth/youtube.force-ssl https://www.googleapis.com/auth/calendar.readonly",
    "refresh_token": "1//xEoDL4iW3cxlI7yDbSRFYNG01kVKM2C-259HOF2aQbI"
  }

Google API'lerini çağırma

Uygulamanız bir erişim jetonu aldıktan sonra, API tarafından istenen erişim kapsamları verilmişse belirli bir kullanıcı hesabı adına bir Google API'sine çağrı yapmak için jetonu kullanabilirsiniz. Bunu yapmak için access_token sorgu parametresi veya Authorization HTTP üst bilgisi Bearer değeri ekleyerek erişim jetonunu API'ye gönderilen bir isteğe ekleyin. Sorgu dizeleri sunucu günlüklerinde görünmeye eğilimli 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, YouTube Canlı Yayın API'sini çağırırken).

YouTube Canlı Yayın API'sinin, hizmet hesabı akışını desteklemediğini unutmayın. Hizmet hesaplarını YouTube hesaplarına bağlamak mümkün olmadığından, bu akışla isteklerin yetkilendirilmesi NoLinkedYouTubeAccount hatası oluşturur.

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

HTTP GET örnekleri

Authorization: Bearer HTTP üst bilgisi kullanılarak liveBroadcasts.list uç noktasına (YouTube Live Streaming 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/liveBroadcasts?part=id%2Csnippet&mine=true HTTP/1.1
Host: www.googleapis.com
Authorization: Bearer access_token

Kimliği doğrulanmış kullanıcı için access_token sorgu dizesi parametresini kullanan aynı API'ye yapılan bir çağrı aşağıda verilmiştir:

GET https://www.googleapis.com/youtube/v3/liveBroadcasts?access_token=access_token&part=id%2Csnippet&mine=true

curl örnek

Bu komutları curl komut satırı uygulamasıyla test edebilirsiniz. HTTP üst bilgisi seçeneğini kullanan bir örneği aşağıda bulabilirsiniz (tercih edilir):

curl -H "Authorization: Bearer access_token" https://www.googleapis.com/youtube/v3/liveBroadcasts?part=id%2Csnippet&mine=true

Alternatif olarak sorgu dizesi parametresi seçeneğini de kullanabilirsiniz:

curl https://www.googleapis.com/youtube/v3/liveBroadcasts?access_token=access_token&part=id%2Csnippet&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 kapsamlara çevrimdışı erişim isteğinde bulunduysanız kullanıcıdan izin istemeden (kullanıcı mevcut olmadığında dahil) bir erişim jetonunu yenileyebilirsiniz.

Uygulamanız, bir erişim jetonunu yenilemek için Google'ın yetkilendirme sunucusuna (https://oauth2.googleapis.com/token) aşağıdaki parametreleri içeren bir HTTPS POST isteğinde bulunur:

Alanlar
client_id API Consolekaynağından alınan istemci kimliği.
client_secret API Consolekaynağından alınan istemci gizli anahtarı. (client_secret, Android, iOS veya Chrome uygulaması olarak kaydedilen istemcilerden gelen istekler için geçerli değildir.)
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 https://www.googleapis.com/auth/calendar.readonly",
  "token_type": "Bearer"
}

Verilecek yenileme jetonu sayısıyla ilgili sınırlamalar olduğunu unutmayın. Bu sınırlamalar, istemci/kullanıcı kombinasyonu başına bir tane ve tüm istemciler genelinde kullanıcı başına bir tanedir. 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ırlara ulaşabilir. Bu durumda eski yenileme jetonları çalışmayı durdurur.

Jetonu iptal etme

Bazı durumlarda kullanıcılar, bir uygulamaya verilen erişimi iptal etmek isteyebilir. Kullanıcılar 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ın Site veya uygulama erişimini kaldırma bölümünü inceleyin.

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 ettiği, bir uygulamayı kaldırdığı veya bir uygulamanın ihtiyaç duyduğu API kaynaklarının önemli ölçüde değiştiği durumlarda önemlidir. Diğer bir deyişle, kaldırma işleminin bir kısmı, daha önce uygulamaya verilen izinlerin kaldırılmasını sağlamak için bir API isteği içerebilir.

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

Uygulama yönlendirme yöntemleri

Özel URI şeması (Android, iOS, UWP)

Özel URI şemaları, uygulamanızı açmak için özel olarak tanımlanmış bir şema kullanan bir derin bağlantı biçimidir.

Android'de özel URI şemalarını kullanmaya alternatif

OAuth 2.0 yanıtını doğrudan uygulamanıza göndererek yönlendirme URI'sine ihtiyaç duyulmasını ortadan kaldıran Android için Google ile Oturum Açma SDK'sını kullanın.

Android için Google ile Oturum Açma SDK'sına geçiş yapma

Android'de OAuth entegrasyonunuz için özel bir şema kullanıyorsanız önerilen Android için Google Sign-In SDK'sını kullanmaya tamamen geçiş yapmak üzere aşağıdaki işlemleri tamamlamanız gerekir:

  1. Kodunuzu Google Sign-In SDK'sını kullanacak şekilde güncelleyin.
  2. Google API Konsolu'nda özel şema desteğini devre dışı bırakın.

Google Sign-In Android SDK'sına geçmek için aşağıdaki adımları uygulayın:

  1. Kodunuzu Google Sign-In Android SDK'sını kullanacak şekilde güncelleyin:
    1. Google'ın OAuth 2.0 sunucusuna nerede istek gönderdiğinizi belirlemek için kodunuzu inceleyin. Özel bir şema kullanıyorsanız isteğiniz aşağıdaki gibi görünür:
        https://accounts.google.com/o/oauth2/v2/auth?
        scope=<SCOPES>&
        response_type=code&
        &state=<STATE>&
        redirect_uri=com.example.app:/oauth2redirect&
        client_id=<CLIENT_ID>
        
      com.example.app:/oauth2redirect, yukarıdaki örnekteki özel şema yönlendirme URI'sidir. Özel URI şeması değerinin biçimi hakkında daha fazla bilgi için redirect_uri parametre tanımına bakın.
    2. Google Sign-In SDK'sını yapılandırmak için ihtiyaç duyacağınız scope ve client_id istek parametrelerini not edin.
    3. SDK'yı ayarlamak için Google ile oturum açma özelliğini Android uygulamanıza entegre etmeye başlama talimatlarını uygulayın. Önceki adımda aldığınız client_id değerini yeniden kullanacağınız için Arka uç sunucunuzun OAuth 2.0 istemci kimliğini alın adımını atlayabilirsiniz.
    4. Sunucu Tarafı API erişimini etkinleştirme talimatlarını uygulayın. Bu işlem aşağıdaki adımları içerir:
      1. İzin istediğiniz kapsamlar için bir kimlik doğrulama kodu almak üzere getServerAuthCode yöntemini kullanın.
      2. Yetkilendirme kodunu, erişim ve yenileme jetonuyla değiştirmek için uygulamanızın arka ucuna gönderin.
      3. Kullanıcı adına Google API'lerine çağrı yapmak için alınan erişim jetonunu kullanın.
  2. Google API Konsolu'nda özel şema desteğini devre dışı bırakma:
    1. OAuth 2.0 kimlik bilgileriniz listesine gidip Android istemcinizi seçin.
    2. Özel URI şeması desteğini devre dışı bırakmak için Gelişmiş Ayarlar bölümüne gidin, Özel URI Şemasını Etkinleştir onay kutusunun işaretini kaldırın ve Kaydet'i tıklayın.

Özel URI şemasını etkinleştirme

Önerilen alternatif sizin için uygun değilse aşağıdaki talimatları uygulayarak Android istemciniz için özel URI şemalarını etkinleştirebilirsiniz:
  1. OAuth 2.0 kimlik bilgileri listenize gidin ve Android istemcinizi seçin.
  2. Özel URI şeması desteğini etkinleştirmek için Gelişmiş Ayarlar bölümüne gidin, Özel URI Şemasını Etkinleştir onay kutusunu işaretleyin ve Kaydet'i tıklayın.

Chrome uygulamalarında özel URI şemalarını kullanmaya alternatif

OAuth 2.0 yanıtını doğrudan uygulamanıza göndererek yönlendirme URI'si kullanma ihtiyacını ortadan kaldıran Chrome Identity API'yi kullanın.

Geri döngü IP adresi (macOS, Linux, Windows masaüstü)

Bu URL'yi kullanarak yetkilendirme kodunu almak için uygulamanızın yerel web sunucusunda dinleme modunda olması gerekir. Bu işlem tüm platformlarda olmasa da çoğunda yapılabilir. Ancak platformunuz bu özelliği destekliyorsa yetkilendirme kodunu almak için önerilen mekanizma 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 dönmesini bildiren bir HTML sayfası görüntüleyerek yanıt vermelidir.

Önerilen kullanım macOS, Linux ve Windows masaüstü (Evrensel Windows Platformu hariç) 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

Uygulama sahipliğini doğrulama (Android, Chrome)

Uygulama kimliğine bürünme riskini azaltmak için uygulamanızın sahipliğini doğrulayabilirsiniz.

Yapay Zeka

Doğrulama sürecini tamamlamak için Google Play geliştirici hesabınızı (varsa) ve uygulamanızın Google Play Console'a kayıtlı olması gerekir. Doğrulamanın başarılı olması için aşağıdaki koşullar karşılanmalıdır:

  • Google Play Console'da, doğrulamayı tamamladığınız Android OAuth istemciyle aynı paket adına ve SHA-1 imza sertifikası parmak izine sahip kayıtlı bir uygulamanız olmalıdır.
  • Google Play Console'da uygulama için Yönetici iznine sahip olmanız gerekir. Google Play Console'da erişim yönetimi hakkında daha fazla bilgi edinin.

Doğrulama sürecini tamamlamak için Android istemcisinin Uygulama Sahipliğini Doğrula bölümünde Sahiplik Doğrula düğmesini tıklayın.

Doğrulama başarılı olursa doğrulama sürecinin başarılı olduğunu onaylayan bir bildirim gösterilir. Aksi takdirde bir hata istemi gösterilir.

Başarısız doğrulamayı düzeltmek için aşağıdakileri deneyin:

  • Doğruladığınız uygulamanın Google Play Console'da kayıtlı olduğundan emin olun.
  • Google Play Console'da uygulama için Yönetici iznine sahip olduğunuzdan emin olun.
Chrome

Doğrulama sürecini tamamlamak için Chrome Web Mağazası geliştirici hesabınızı kullanırsınız. Doğrulamanın başarılı olması için aşağıdaki şartlar karşılanmalıdır:

  • Chrome Web Mağazası Geliştirici Kontrol Paneli'nde, doğrulamayı tamamladığınız Chrome uzantısı OAuth istemcisinin kimliğiyle aynı kimliğe 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 Sahiplik Doğrula düğmesini tıklayın.

Not: Hesabınıza erişim izni verdikten sonra doğrulama sürecini tamamlamadan önce birkaç dakika bekleyin.

Doğrulama başarılı olursa doğrulama sürecinin başarılı olduğunu onaylayan bir bildirim gösterilir. Aksi takdirde bir hata istemi gösterilir.

Başarısız doğrulamayı düzeltmek için aşağıdakileri deneyin:

  • Chrome Web Mağazası Geliştirici Kontrol Paneli'nde, doğrulamayı tamamladığınız Chrome Uzantısı OAuth istemcisinin aynı öğe kimliğine sahip kayıtlı bir öğe bulunduğ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ğinden emin olun. 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 gelip gelmediğini doğrulamak için Apple'ın App Attest hizmetini kullanarak iOS uygulamalarınızı yetkisiz kullanıma karşı korumaya 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 istemciniz için Uygulama Kontrolü'nü başarıyla etkinleştirmek üzere aşağıdaki koşulların karşılanması gerekir:
  • iOS istemciniz için bir ekip kimliği belirtmeniz gerekir.
  • Birden fazla uygulamaya yönlendirebileceği için paket kimliğinizde joker karakter kullanmamanız gerekir. Yani paket kimliği, yıldız (*) işareti içermemelidir.
Uygulama Kontrolü'nü etkinleştirmek için iOS istemcinizi düzenleme görünümünde OAuth istemcinizi Firebase Uygulama Kontrolü ile kötüye kullanıma karşı koruyun açma/kapatma düğmesini açın.

Uygulama Kontrolü'nü etkinleştirdikten sonra, istemcinizden gelen OAuth istekleriyle ilgili metrikleri OAuth istemcisinin düzenleme görünümünde görmeye başlarsınız. Doğrulanmamış kaynaklardan gelen istekler, Uygulama Kontrolü'nü zorunlu kılana kadar engellenmez. Metrik izleme sayfasındaki bilgiler, yaptırımı ne zaman başlatacağınızı belirlemenize yardımcı olabilir.

iOS uygulamanız için Uygulama Denetimi'ni etkinleştirirken Uygulama Denetimi özelliğiyle ilgili hatalar görebilirsiniz. Bu hataları düzeltmek için aşağıdakileri deneyin:

  • Belirttiğiniz paket kimliğinin ve ekip kimliğinin geçerli olup olmadığını doğrulayın.
  • Paket kimliği için joker karakter kullanmadığınızdan emin olun.

iOS istemciniz için uygulama kontrolünü zorunlu kılma

Uygulamanız için Uygulama Kontrolü'nü etkinleştirmek, tanınmayan istekleri otomatik olarak engellemez. Bu korumayı uygulamak için iOS istemcinizi 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ış isteklerin sayısı: Geçerli bir Uygulama Kontrolü jetonu içeren istekler. Uygulama Kontrolü yaptırımını etkinleştirdikten sonra yalnızca bu kategorideki istekler başarılı olur.
  • Doğrulanmamış isteklerin sayısı: güncel olmayabilecek istemci istekleri: Uygulama Kontrolü jetonu bulunmayan istekler. Bu istekler, uygulamanızın Uygulama Kontrolü uygulaması içermeyen 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ın kimliğine bürünmeye çalışan asılsız bir istemciden veya emüle edilmiş ortamlardan gelebilecek) istekler.
Uygulama Kontrolü'nün kullanıcılarınızı nasıl etkileyeceğini anlamak için bu metrikleri inceleyin.

Uygulama Kontrolü'nü zorunlu kılmak için ENFORCE düğmesini tıklayın ve seçiminizi onaylayın. Zorunlu kılındıktan sonra, istemcinizden gelen tüm doğrulanmamış istekler reddedilir.

Not: Yaptırım özelliğini etkinleştirdikten sonra değişikliklerin geçerlilik kazanması 15 dakikayı bulabilir.

iOS istemciniz için Uygulama Kontrolü zorunluluğunu kaldırma

Uygulamanız için Uygulama Kontrolü zorunluluğunu kaldırmak zorunlulaştırmayı durdurur ve doğrulanmamış istekler dahil olmak üzere istemcinizden Google OAuth 2.0 uç noktalarına yapılan tüm isteklere izin verir.

iOS istemciniz için Uygulama Denetimi'ni devre dışı bırakmak isterseniz iOS istemcisinin düzenleme görünümüne gidin, DEVRE DIŞI BIRAK düğmesini tıklayın ve seçiminizi onaylayın.

Not: Uygulama Kontrolü'nün zorunluluğunu kaldırdıktan sonra değişikliklerin geçerlilik kazanması 15 dakikayı bulabilir.

iOS istemciniz için Uygulama Kontrolü'nü devre dışı bırakma

Uygulamanız için Uygulama Kontrolü'nü devre dışı bıraktığınızda tüm Uygulama Kontrolü izleme ve zorunlu kılma işlemleri durdurulur. İstemcinizin metriklerini izlemeye devam edebilmek için Uygulama Kontrolü'nü devre dışı bırakmayı düşünebilirsiniz.

iOS istemciniz için Uygulama Kontrolü'nü devre dışı bırakmak üzere iOS istemcisinin düzenleme görünümüne gidin ve OAuth istemcinizi Firebase Uygulama Kontrolü ile 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 dakikayı bulabilir.

Daha fazla bilgi

IETF'nin Doğal Uygulamalar için OAuth 2.0 ile ilgili Mevcut En İyi Uygulamaları belgesinde, burada açıklanan en iyi uygulamaların çoğu yer alır.

Hesaplar Arası Koruma'yı uygulama

Kullanıcılarınızın hesaplarını korumak için atmanız gereken bir diğer adım da Google'ın Hesaplar Arası Koruma Hizmeti'ni kullanarak Hesaplar Arası Koruma'yı uygulamaktır. Bu hizmet, kullanıcı hesabında yapılan önemli değişikliklerle ilgili olarak uygulamanıza bilgi sağlayan güvenlik etkinliği bildirimlerine abone olmanızı sağlar. Ardından, etkinliklere nasıl yanıt vermeye karar verdiğiniz doğrultusunda işlem yapmak için bu bilgileri kullanabilirsiniz.

Google'ın Hesaplar Arası Koruma Hizmeti tarafından uygulamanıza gönderilen etkinlik türlerine örnek olarak şunlar 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

Hesaplar Arası Koruma'nın nasıl uygulanacağı ve mevcut etkinliklerin tam listesi hakkında daha fazla bilgi için Hesaplar Arası Koruma ile kullanıcı hesaplarını koruma sayfasına bakabilirsiniz.