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

Genel bakış, Google'ın desteklediği OAuth 2.0 akışlarını özetler. Bu sayede, uygulamanız için doğru akışı seçtiğinizden emin olabilirsiniz.

Bu dokümanda, telefonlar, tabletler ve bilgisayarlar gibi cihazlara yüklenen uygulamaların, Google API'lerine erişim yetkisi vermek için Google'ın OAuth 2.0 uç noktalarını nasıl kullandığı açıklanmaktadır.

OAuth 2.0, kullanıcıların kullanıcı adlarını, şifrelerini ve diğer bilgilerini gizli tutarken belirli verileri bir uygulamayla paylaşmasına olanak tanır. Örneğin, bir uygulama, kullanıcıların Google Drive'larında dosya depolamasına izin vermek için OAuth 2.0'ı kullanabilir.

Yüklü uygulamalar tek tek cihazlara dağıtılır ve bu uygulamaların sırları saklayamayacağı varsayılır. Kullanıcılar uygulamadayken veya uygulama arka planda çalışırken Google API'lerine erişebilir.

Bu yetkilendirme akışı web sunucusu uygulamaları için kullanılana benzer. Aradaki 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ıdır.

Alternatifler

Mobil uygulamalarda Android veya iOS için Google ile Oturum Açma'yı kullanmayı tercih edebilirsiniz. Google ile Oturum Açma istemci kitaplıkları, kimlik doğrulama ve kullanıcı yetkilendirmesini işler ve burada açıklanan alt düzey protokolden daha basit bir şekilde uygulanabilir.

Bir sistem tarayıcısını desteklemeyen veya TV'ler, oyun konsolları, kameralar ya da yazıcılar gibi sınırlı giriş özelliklerine sahip cihazlarda çalışan uygulamalar için TV'ler ve Bilgisayarlar için OAuth 2.0 veya TV'lerde ve Sınırlı Giriş Cihazlarında Oturum Açma bölümüne bakın.

Kitaplıklar ve örnekler

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

Ön koşullar

Projeniz için API'leri etkinleştirin

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

Projenizde bir API'yi etkinleştirmek için:

  1. Open the API Library içinde Google API Console.
  2. If prompted, select a project, or create a new one.
  3. API Library , mevcut tüm API'leri ürün ailesine ve popülerliğe göre gruplandırılmış olarak listeler. Etkinleştirmek istediğiniz API listede görünmüyorsa API'yi bulmak için aramayı kullanın veya ait olduğu ürün ailesinde Tümünü Görüntüle'yi tıklayın.
  4. Etkinleştirmek istediğiniz API'yi seçip Etkinleştir düğmesini tıklayın.
  5. If prompted, enable billing.
  6. If prompted, read and accept the API's Terms of Service.

Yetkilendirme kimlik bilgileri oluşturma

Google API'lerine erişmek için OAuth 2.0 kullanan tüm uygulamaların, uygulamayı Google'ın OAuth 2.0 sunucusuna 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. Sonrasında uygulamalarınız, ilgili 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 ve yönlendirme yöntemleri 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.

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

Android, iOS uygulamaları ve Universal Windows Platform (UWP) uygulamaları için özel bir URI şeması önerilir.

Android
  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 Credentials page gösterilir.
  3. Android uygulamanızın paket adını girin. Bu değer, uygulama manifest dosyanızdaki <manifest> öğesinin package özelliğinde belirtilir.
  4. Uygulama dağıtımının SHA-1 imzalama sertifikası dijital 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 okunabilir bir biçimde yazdırmak için Java ile birlikte gelen keytool yardımcı programını kullanın. keytool çıkışının Certificate fingerprints bölümünde SHA1 değerini kopyalayın. Daha fazla bilgi için Android için Google API'leri dokümanlarında İstemcinizi Kimlik Doğrulama konusuna bakın.
  5. 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 Credentials page gösterilir.
  3. Uygulamanız için paket tanımlayıcısını girin. Paket kimliği, uygulamanızın bilgi özelliği listesi kaynak dosyasındaki (info.plist) 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 App Store Connect sitesindeki Uygulama Bilgileri sayfasının Genel Bilgiler bölümünde de gösterilir.
  4. (İsteğe bağlı)

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

    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 ok yukarı simgesi) seçin.
    4. Bağlantıyı Kopyala'yı seçin.
    5. Bağlantıyı bir metin düzenleyicisine 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 Geliştirici Hesabı dokümanlarındaki Ekip Kimliğinizi bulma bölümüne bakın.

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

UWP uygulamaları için özel URI şeması 39 karakterden uzun olamaz.

Loopback IP adresi (macOS, Linux, Windows masaüstü)

Yetkilendirme kodunu bu URL'yi kullanarak almak için uygulamanız, yerel web sunucusunda dinliyor olmalıdır. Mümkün olmasa da tüm platformlarda bu mümkündür. Bununla birlikte, platformunuz destekliyorsa yetkilendirme kodunu almak için önerilen mekanizmadır.

Uygulamanız yetkilendirme yanıtı aldığında en iyi kullanılabilirlik için kullanıcıya tarayıcıyı kapatma ve uygulamanıza geri dönmesini bildiren bir HTML sayfası göstererek yanıt vermelidir.

Önerilen kullanım macOS, Linux ve Windows masaüstü (Evrensel Windows Platformu değil) uygulamaları
Form değerleri Uygulama türünü Masaüstü uygulaması olarak ayarlayın.

Manuel kopyalama/yapıştırma

Erişim kapsamlarını tanımlama

Kapsamlar, uygulamanızın yalnızca ihtiyaç duyduğu kaynaklara erişim istemesine, kullanıcıların uygulamanıza verdiği erişim miktarını kontrol etmesine imkan 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şmesi için izin alması gereken kapsamları belirlemenizi öneririz.

OAuth 2.0 API Kapsamları belgesinde, Google API'lerine erişmek için kullanabileceğiniz kapsamların tam listesi bulunmaktadır.

OAuth 2.0 erişim jetonları edinme

Aşağıdaki adımlarda, kullanıcı adına API isteği gerçekleştirmek için uygulamanızın Google'ın OAuth 2.0 sunucusuyla nasıl etkileşime girdiği gösterilir. Uygulamanızın, kullanıcı yetkilendirmesi gerektiren bir Google API isteğini yürütebilmesi için önce bu izne sahip olması gerekir.

1. Adım: Bir kod doğrulayıcı ve giriş sorgulaması oluşturun

Google, yüklü uygulama akışını daha güvenli hale getirmek için Code Exchange için Kanıt Anahtarı (PKCE) protokolünü destekler. Her yetkilendirme isteği için benzersiz bir kod doğrulayıcı oluşturulur ve yetkilendirme kodu alması için "code_challenge&quot" adı verilen dönüştürülmüş değer, yetkilendirme sunucusuna gönderilir.

Kod doğrulayıcıyı oluşturma

code_verifier, ayrılmamış karakterleri [A-Z] / [a-z] / [0-9] / "-" / "~& ~#; minimum 43 karakter uzunluğunda olup

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

Kod sorgulamasını oluşturma

Kod sorgulaması oluşturmanın iki yöntemi desteklenir.

Kod Sorgulaması Oluşturma Yöntemleri
S256 (önerilir) Kod doğrulama işlemi, kod doğrulayıcının Base64URL (dolgusuz) olarak kodlanmış SHA256 karma değeridir.
code_challenge = BASE64URL-ENCODE(SHA256(ASCII(code_verifier)))
düz Kod giriş sorgulaması, 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 numaralı telefondan Google’ın 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ı 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 API Console Credentials pagebölümünde bulabilirsiniz.

redirect_uri Zorunlu

Google’ın yetkilendirme sunucusunun uygulamanıza nasıl yanıt vereceğini belirler. Yüklü uygulamaların kullanabileceği birkaç yönlendirme seçeneği vardır ve yetkilendirme kimlik bilgilerinizi belirli bir yönlendirme yöntemini göz önünde bulundurarak ayarlamış olmanız gerekir.

Bu değerin, müşterinizin API ConsoleCredentials pageiçinde yapılandırdığınız OAuth 2.0 istemcisi için yetkili yönlendirme URI'lerinden biriyle tam olarak eşleşmesi gerekir. 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 alan adının ters DNS gösterimidir. Özel şema, geçerli olacak bir dönem içermelidir.
  • 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, normal HTTP URL'lerinden farklı olan tek bir eğik çizgiyle başlaması gerektiğini unutmayın.
Geri döngü IP adresi http://127.0.0.1:port veya http://[::1]:port

Platformunuzu ilgili geri dönüş IP adresi için sorgulayın ve rastgele kullanılabilir bir bağlantı noktasında HTTP işleyicisi başlatın. port yerine uygulamanızın dinleyeceği gerçek bağlantı numarasını girin.

Mobil uygulamalarda geri döngü IP adresi yönlendirme seçeneğinin desteklenmesinin KULLANIMDAN KALDIRILDI olduğunu unutmayın.

response_type Zorunlu

Google OAuth 2.0 uç noktasının bir yetkilendirme kodu döndürüp döndürmediğ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 sınırlandırılmış bir kapsam listesi. Bu değerler, Google'ın kullanıcıya gösterdiği izin ekranını belirtir.

Kapsamlar, uygulamanızın yalnızca ihtiyaç duyduğu kaynaklara erişim istemesine olanak tanırken kullanıcıların uygulamanıza verdikleri erişim miktarını kontrol edebilmelerini sağlar. Bu nedenle, istenen kapsam sayısı ile kullanıcı izni alma olasılığı arasında ters bir ilişki vardır.

code_challenge Önerilen

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

code_challenge_method Önerilen

Yetkilendirme kodu değişimi sırasında kullanılacak code_verifier öğesini kodlamak için hangi yöntemin kullanıldığını belirtir. Bu parametre, yukarıda açıklanan code_challenge parametresiyle kullanılmalıdır. code_challenge içeren istekte mevcut değilse code_challenge_method değeri varsayılan olarak plain olur. Bu parametre için desteklenen tek değerler S256 veya plain'dır.

state Önerilen

Yetkilendirme isteğiniz ile yetkilendirme sunucusunun yanıtı arasında durumu korumak için uygulamanızın kullandığı tüm dize değerlerini belirtir. Sunucu, kullanıcının uygulamanızın erişim isteğine izin vermesinden veya reddetmesinden sonra redirect_uri öğesinin URL parça tanımlayıcısında (#) name=value çifti olarak gönderdiğiniz tam değeri döndürür.

Bu parametreyi, kullanıcıyı uygulamanızda doğru kaynağa yönlendirmek, nonce göndermek ve siteler arası istek sahtekarlığını azaltmak gibi çeşitli amaçlarla kullanabilirsiniz. redirect_uri tahmininiz olduğundan, state değeri kullanmak gelen bir bağlantının bir kimlik doğrulama isteği sonucunda gerçekleştiğine dair güvencenizi artırabilir. Rastgele bir dize oluşturur veya bir çerezin ya da istemcinin durumunu yakalayan başka bir değerin karmasını kodlarsanız, isteğin doğrulandığından ve istek ile yanıtın aynı tarayıcıdan geldiğinden emin olmak için yanıtı doğrulayabilirsiniz. Bu şekilde, siteler arası istek sahtekarlığı gibi saldırılara karşı koruma sağlanır. state jetonu oluşturma ve onaylamayla ilgili bir örnek için OpenID Connect dokümanlarına bakın.

login_hint İsteğe bağlı

Uygulamanız hangi kullanıcının kimlik doğrulaması yapmaya çalıştığını bilirse 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 giriş oturumunu seçerek giriş akışını basitleştirmek için ipucunu kullanır.

Parametre değerini, kullanıcının Google kimliğine eşdeğer bir e-posta adresi veya sub tanımlayıcısı olarak ayarlayın.

Örnek yetkilendirme URL'leri

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

URL'ler, redirect_uri parametresinin değeri dışında aynıdır. URL'ler zorunlu response_type ve client_id parametrelerini ve isteğe bağlı state parametresini de içerir. Her URL, okunabilirlik için satır sonu ve boşluk içerir.

Özel URI şeması

https://accounts.google.com/o/oauth2/v2/auth?
 scope=&
 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=&
 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 vermemeye karar verir. Google, bu aşamada, 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 izin penceresi görüntüler. Daha sonra kullanıcı, uygulamanız tarafından istenen bir veya daha fazla kapsama erişim izni verebilir ya da isteği reddedebilir.

Google’ın OAuth 2.0 sunucusundan gelen yanıtın o erişim için izin verilip verilmediğini beklediğinden, uygulamanızın bu aşamada herhangi bir işlem yapması gerekmez. Bu yanıt sonraki 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ıya yönelik hata mesajları gösterebilir. Sık karşılaşılan hata kodları ve önerilen çözünürlükler 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 izin 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 makalesine bakın. Hangi dahili uygulamaların Google Workspace verilerine erişebileceğini kontrol edin.

disallowed_useragent

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

Android

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

Bir Android uygulaması, yerleştirilmiş 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 web geliştiricileri bu hatayla karşılaşabilir. Geliştiriciler, işletim sisteminin varsayılan bağlantı işleyicisinde genel bağlantıların açılmasına izin vermelidir. Bu bağlantı hem Android Uygulama Bağlantıları işleyicilerini hem de varsayılan tarayıcı uygulamasını içerir. Android Özel Sekmeleri kitaplığı da desteklenen bir seçenektir.

iOS

iOS ve macOS geliştiricileri, WKWebView'te yetkilendirme istekleri açıldığında bu hatayla karşılaşabilir. Geliştiriciler bunun yerine iOS için Google ile Oturum Açma veya OpenID Foundation & iOS için AppAuth gibi iOS kitaplıklarını kullanmalıdır.

Bir iOS veya macOS uygulaması, yerleştirilmiş bir kullanıcı aracısında genel web bağlantısı açtığında ve kullanıcı sitenizden Google’ın OAuth 2.0 yetkilendirme uç noktasına gittiğinde web geliştiricileri bu hatayla karşılaşabilir. Geliştiriciler, işletim sisteminin varsayılan bağlantı işleyicisinde genel bağlantıların açılmasına izin vermelidir. Bu bağlantı hem Geçiş Bağlantıları işleyicilerini hem de varsayılan tarayıcı uygulamasını içerir. SFSafariViewController kitaplığı da desteklenen bir seçenektir.

org_internal

İ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. Bu yapılandırma seçeneği hakkında daha fazla bilgi için OAuth kullanıcı rızası ekranını ayarlama yardım makalesindeki Kullanıcı türü bölümünü inceleyin.

redirect_uri_mismatch

Yetkilendirme isteğinde iletilen redirect_uri, OAuth istemci kimliği için yetkilendirilmiş bir yönlendirme URI'si ile eşleşmiyor. Google API Console Credentials pageiçindeki yetkili yönlendirme URI'larını inceleyin.

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

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'si şemasına bağlıdır. Şemadan bağımsız olarak yanıt, bir yetkilendirme kodu (code) veya bir hata (error) içerecektir. Örneğin, error=access_denied kullanıcının isteği reddettiğini belirtir.

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

5. Adım: Yenileme ve erişim jetonları için yetkilendirme kodu değiştirin

Bir erişim jetonu için yetkilendirme kodu değiş tokuşu yapmak üzere https://oauth2.googleapis.com/token uç noktasını çağırın ve aşağıdaki parametreleri ayarlayın:

Alanlar
client_id Credentials page API Consoletarafından alınan istemci kimliği.
client_secret Credentials page API Consoleadresinden alınan istemci gizli anahtarı.
code İlk istekten döndürülen yetkilendirme kodu.
code_verifier 1. Adım'da 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 API ConsoleCredentials page projesinde 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&
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 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 Saniye cinsinden erişim jetonunun kullanım ömrü.
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ı hakkında dijital olarak imzalanmış kimlik bilgilerini içeren bir JSON Web Token'dir (JWT).
refresh_token Yeni bir erişim jetonu almak için kullanabileceğiniz jetondur. Yenileme jetonları, kullanıcı erişimi iptal edene kadar geçerlidir. Yüklenen uygulamalar için yenileme jetonlarının her zaman döndürüldüğünü unutmayın.
scope access_token tarafından verilen erişim kapsamı, boşlukla sınırlandırılmış ve büyük/küçük harfe duyarlı dizelerin listesi olarak ifade edilir.
token_type Döndürülen jetonun türü. Şu an için bu alanın değeri her zaman Bearer olarak ayarlanmıştır.

Aşağıdaki snippet örnek bir yanıt göstermektedir:

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

Google API'lerini çağırma

Uygulamanız bir erişim jetonu aldıktan sonra, API'nin gerektirdiği erişim kapsamları sağlandıysa belirli bir kullanıcı hesabı adına bir Google API'sine çağrı yapmak için bu jetonu kullanabilirsiniz. Bunu yapmak için erişim isteğini bir access_token sorgu parametresi veya Authorization HTTP üst bilgisi Bearer değeri ekleyerek API isteğine ekleyin. Sorgu dizeleri sunucu günlüklerinde görünür olduğu için mümkün olduğunda HTTP üstbilgisi tercih edilir. Çoğu durumda, Google API'lerine çağrılarınızı ayarlamak için bir istemci kitaplığı kullanabilirsiniz (örneğin, Drive Files API'yi çağırırken).

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

HTTP GET örnekleri

Authorization: Bearer HTTP üst bilgisini kullanarak drive.files uç noktasına (Drive Files API) yapılan çağrı aşağıdaki gibi görünebilir. Kendi erişim jetonunuzu belirtmeniz gerektiğini unutmayın:

GET /drive/v2/files HTTP/1.1
Host: www.googleapis.com
Authorization: Bearer access_token

access_token sorgu dizesi parametresini kullanarak kimliği doğrulanmış kullanıcı için aynı API'ye yapılan bir aramayı burada görebilirsiniz:

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

curl örnekleri

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

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

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

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

Erişim jetonunu yenileme

Erişim jetonlarının süresi belirli aralıklarla dolar ve ilgili API isteği için geçersiz kimlik bilgileri haline gelir. Kullanıcıdan izin istemeden (kullanıcı var olmadığında da dahil) jetonla ilişkili kapsamlara çevrimdışı erişim istediyseniz 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ği gönderir:

Alanlar
client_id API Consoleadresinden alınan istemci kimliği.
client_secret API Consoleadresinden alınan istemci gizli anahtarı. (client_secret, Android, iOS veya Chrome uygulamaları olarak kayıtlı 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",
  "token_type": "Bearer"
}

Verilen yenileme jetonlarının sayısı için istemci/kullanıcı kombinasyonu ve kullanıcı başına bir sınır olacak şekilde tüm sınırlar sınırlıdır. Yenileme jetonlarını uzun süreli depolamada saklamanız ve geçerli oldukları sürece kullanmaya devam etmeniz gerekir. Uygulamanız çok fazla yenileme jetonu isterse bu sınırlarla karşılaşabilirsiniz. Böyle bir durumda eski yenileme jetonları çalışmayı durdurur.

Jeton iptal ediliyor

Bazı durumlarda, bir kullanıcı bir uygulamaya verilen erişimi iptal etmek isteyebilir. Kullanıcı, Hesap Ayarları sayfasını ziyaret ederek erişimi iptal edebilir. Daha fazla bilgi için Üçüncü taraf sitelerin &site erişimini kaldırma ve hesabınıza erişimi olan uygulamalar destek bölümüne bakın.

Bir uygulama kendisine verilen erişimi programlı bir şekilde iptal etmek de mümkündür. Kullanıcının abonelikten çıktığı, uygulamaları kaldırdığı veya uygulama için gereken 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ı, daha önce uygulamaya verilen izinlerin kaldırılmasını sağlamak için bir API isteği içerebilir.

Uygulamanız bir jetonu programatik olarak iptal etmek için https://oauth2.googleapis.com/revoke isteği gönderir ve jetonu bir parametre olarak içerir:

curl -d -X -POST --header "Content-type:application/x-www-form-urlencoded" \
        https://oauth2.googleapis.com/revoke?token={token}

Jeton bir 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ılı bir şekilde işlenirse yanıtın HTTP durum kodu 200 olur. Hata koşulları için 400 HTTP durum kodu hata koduyla birlikte döndürülür.

Daha Fazla Okuma

IETF En İyi Mevcut Uygulamaları Yerel Uygulamalar için OAuth 2.0, burada belgelenen en iyi uygulamaların çoğunu oluşturur.