Bu dokümanda telefonlar, tabletler ve bilgisayarlar gibi cihazlara yüklenen uygulamaların, Google API'lerine erişimi yetkilendirmek 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 kullanıcı verilerini, şifreleri ve diğer bilgileri gizli tutarken belirli verileri paylaşabilir. Örneğin bir uygulama, kullanıcılardan Google Drive'larında dosya depolama izni almak için OAuth 2.0'ı kullanabilir.
Yüklü uygulamalar tek tek cihazlara dağıtılır ve bu uygulamaların gizli anahtarları 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ılan akışa benzerdir. Aradaki temel fark, yüklü uygulamaların sistem tarayıcısını açması ve Google'ın yetkilendirme sunucusundan gelen yanıtları işleyebilmek 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 özelliğini kullanmayı tercih edebilirsiniz. Google ile Oturum Açma istemci kitaplıkları, kimlik doğrulama ve kullanıcı yetkilendirmesi işlemlerini gerçekleştirir ve bunların uygulanması, burada açıklanan alt düzey protokolden daha basit olabilir.
Sistem tarayıcısını desteklemeyen veya TV, oyun konsolu, kamera veya yazıcı gibi sınırlı giriş işlevlerine sahip cihazlarda ç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 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:
- Android için AppAuth kitaplığı
- iOS için AppAuth kitaplığı
- Uygulamalar için OAuth: Windows Örnekleri
Ö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 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.
- API Library mevcut tüm API'leri ürün ailesine ve popülerliğe göre gruplandırılmış halde listeler. Etkinleştirmek istediğiniz API listede görünmüyorsa API'yi bulmak için arama özelliğini kullanın veya ait olduğu ürün ailesinde Tümünü Göster'i tıklayın.
- Etkinleştirmek istediğiniz API'yi seçip Etkinleştir düğmesini tıklayın.
- If prompted, enable billing.
- If prompted, read and accept the API's Terms of Service.
Yetkilendirme kimlik bilgileri oluşturun
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. Böylece uygulamalarınız bu proje için etkinleştirdiğiniz API'lere erişmek üzere kimlik bilgilerini kullanabilir.
- Go to the Credentials page.
- Kimlik bilgisi oluştur > OAuth istemci kimliği seçeneğini tıklayın.
- 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 ve Universal Windows Platform (UWP) uygulamaları için özel URI şeması önerilir.
Android
- Android uygulama türünü seçin.
- OAuth istemcisi için bir ad girin. Bu ad, istemciyi tanımlamak için projenizin Credentials page üzerinde gösterilir.
- Android uygulamanızın paket adını girin. Bu değer, uygulama manifest dosyanızdaki
<manifest>
öğesininpackage
özelliğinde tanımlanır. - 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 kullanıcılar 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ündekiSHA1
değerini kopyalayın. Daha fazla bilgi için Android API'leri ile ilgili belgede Müşteri Kimlik Doğrulaması bölümüne bakın.
- Oluştur'u tıklayın.
iOS
- iOS uygulama türünü seçin.
- OAuth istemcisi için bir ad girin. Bu ad, istemciyi tanımlamak için projenizin Credentials page üzerinde gösterilir.
- Uygulamanızın paket tanımlayıcısını girin. Paket kimliği, uygulamanızın bilgi özelliği listesi kaynak dosyasındaki (info.plist) CFBundleIdentifier değerinin 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.
- (İ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'sine eklenen sayısal bir dizedir.
- iOS veya iPad cihazınızda Apple App Store uygulamasını açın.
- Uygulamanızı arayın.
- Paylaş düğmesini (kare ve yukarı ok simgesi) seçin.
- Bağlantıyı kopyala'yı seçin.
- Bağlantıyı bir metin düzenleyiciye yapıştırın. App Store Kimliği, URL'nin son bölümüdür.
Örnek:
https://apps.apple.com/app/google/id284815942
- (İsteğe bağlı)
Ekip kimliğinizi girin. Daha fazla bilgi için Apple Geliştirici Hesabı dokümanlarındaki Team ID'nizi inceleyin.
- Oluştur'u tıklayın.
dönemden döneme
- Universal Windows Platform uygulama türünü seçin.
- OAuth istemcisi için bir ad girin. Bu ad, istemciyi tanımlamak için projenizin Credentials page üzerinde gösterilir.
- Uygulamanızın 12 karakterli Microsoft Store kimliğini girin. Bu değeri Uygulama yönetimi bölümündeki Uygulama kimliği sayfasının Microsoft İş Ortağı Merkezi'nde bulabilirsiniz.
- Oluştur'u tıklayın.
UWP uygulamalarında, özel URI şeması 39 karakterden uzun olamaz.
Loopback IP adresi (macOS, Linux, Windows masaüstü)
Bu URL'yi kullanarak yetkilendirme kodunu almak için uygulamanızın yerel web sunucusunda dinlemesi gerekir. Bu mümkün olmasa da birçok platformda mümkün. Ancak platformunuz destekliyorsa yetkilendirme kodunu almak için önerilen mekanizma budur.
Uygulamanız yetkilendirme yanıtı aldığında en iyi şekilde kullanılabilir olması 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ü (Universal Windows Platform hariç) uygulamaları |
Form değerleri | Uygulama türünü Masaüstü uygulaması olarak ayarlayın. |
Manuel kopyalama/yapıştırma
Erişim kapsamlarını belirleme
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 etmelerine olanak tanır. Bu nedenle, istenen kapsam sayısı ile kullanıcı rızası alma olasılığı arasında ters bir ilişki olabilir.
OAuth 2.0 yetkilendirmesini uygulamaya başlamadan önce, uygulamanızın erişmesi gereken izinlerin kapsamını belirlemenizi öneririz.
OAuth 2.0 API Kapsamları dokümanı, Google API'lerine erişmek için kullanabileceğiniz kapsamların tam listesini içerir.
OAuth 2.0 erişim jetonlarını edinme
Aşağıdaki adımlarda, uygulamanızın kullanıcı adına API isteğinde bulunmak için kullanıcının iznini almak amacıyla uygulamanızın Google'ın OAuth 2.0 sunucusuyla nasıl etkileşime geçtiği gösterilmektedir. Uygulamanızın, kullanıcı yetkilendirme gerektiren bir Google API isteği yürütebilmesi için önce bu izne sahip olması gerekir.
1. Adım: Kod doğrulayıcı ve sorgu oluşturma
Google, yüklü uygulama akışını daha güvenli hale getirmek için Kod Değişimi 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 kodunu almak için, dönüştürülen kod adı "code_challenge" gönderilir.
Kod doğrulayıcıyı oluşturma
code_verifier
, ayrılmamış [A-Z] / [a-z] / [0-9] / "-" / "." / "_" / "~" karakterlerini kullanan ve en az 43 karakter uzunluğunda, maksimum 128 karakter uzunluğunda yüksek entropi şifreli bir rastgele dizedir.
Kod doğrulayıcı, değeri tahmin etmeyi imkansız hale getirecek kadar entropiye sahip olmalıdır.
Kod sorgulamasını oluşturma
Kod sorgulaması oluşturmanın iki yöntemi desteklenir.
Code Challenge Oluşturma Yöntemleri | |
---|---|
S256 (önerilir) | Kodlayıcının kodu, kod doğrulayıcının Base64URL (dolgusuz) kodlu SHA256 karmasıdır.
|
düz | Kod sorgulaması, yukarıda oluşturulan kod doğrulayıcıyla aynı değerdir.
|
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
adresinden Google'ın yetkilendirme sunucusuna bir istek gönderin. Bu uç nokta etkin oturum aramasını yönetir, kullanıcının kimliğini doğrular ve kullanıcı rızası 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 API Console Credentials pagebölümünde bulabilirsiniz. |
||||||
redirect_uri |
Zorunlu
Google yetkilendirme sunucusunun uygulamanıza nasıl yanıt gönderdiğ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. Değer, istemcinizin API Console
Credentials pageiçinde 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 Aşağıdaki tabloda her yöntem için uygun
|
||||||
response_type |
Zorunlu
Google OAuth 2.0 uç noktasının bir 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 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 etmelerine olanak tanır. Bu yüzden, istenen kapsam sayısı ile kullanıcı rızası 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_challenge_method |
Önerilen
Yetkilendirme kodu değişimi sırasında kullanılacak |
||||||
state |
Önerilen
Uygulamanızın, yetkilendirme isteğiniz ile yetkilendirme sunucusunun yanıtı arasında durumu korumak için kullandığı dize değerini belirtir.
Kullanıcı, uygulamanızın erişim isteğine izin verdikten veya reddettikten sonra, Bu parametreyi, kullanıcıyı uygulamanızdaki doğru kaynağa yönlendirmek, nonce'lar göndermek ve siteler arası istek sahtekarlığını azaltmak gibi çeşitli amaçlarla kullanabilirsiniz. |
||||||
login_hint |
İsteğe bağlı
Uygulamanız hangi kullanıcının kimlik doğrulaması yapmaya çalıştığını biliyorsa Google Kimlik Doğrulama Sunucusu'na bir 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 ipucundan yararlanır. Parametre değerini, kullanıcının Google kimliğiyle eşdeğer olan bir e-posta adresi veya |
Örnek yetkilendirme URL'leri
Aşağıdaki sekmelerde, farklı yönlendirme URI'si seçenekleri için örnek yetkilendirme URL'leri gösterilmektedir.
URL'ler, redirect_uri
parametresinin değeri dışında özdeştir. URL'ler gerekli response_type
ve client_id
parametrelerinin yanı sıra isteğe bağlı state
parametresini de içerir. Her URL, okunabilirlik için satır sonları ve boşluklar 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
Geri Dönüş 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 gösteren bir izin penceresi ve verilecek erişim kapsamlarının özetini gösterir. Ardından kullanıcı, uygulamanız tarafından talep edilen bir veya daha fazla kapsam için erişim izni verebilir ya da isteği reddedebilir.
Google'ın OAuth 2.0 sunucusundan gelen yanıtın yapılıp yapılmadığını gösteren yanıt beklendiğ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 isteklerde, beklenen kimlik doğrulama ve yetkilendirme akışları yerine kullanıcıya yönelik hata mesajları gösterilebilir. 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 edinmek için Google Workspace Yönetici yardım makalesine göz atın: Google Workspace verilerine hangi üçüncü taraf uygulamalar ve dahili uygulamaların erişebileceğini yönetme.
disallowed_useragent
Yetkilendirme uç noktası, Google'ın OAuth 2.0 Politikaları tarafından izin verilmeyen bir yerleşik kullanıcı aracısının içinde görüntülenir.
Android
Android geliştiricileri, android.webkit.WebView
ürününde 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.
Bir Android uygulaması, yerleştirilmiş bir kullanıcı aracısında genel bir web bağlantısı açıp 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 (Android App Links işleyicilerini veya varsayılan tarayıcı uygulamasını içeren) genel bağlantıların açılmasına izin vermelidir. Ayrıca, Android Özel Sekmeleri kitaplığı da desteklenen bir seçenektir.
iOS
iOS ve macOS geliştiricileri, WKWebView
'te yetkilendirme istekleri 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.
Bir iOS veya macOS uygulaması, yerleştirilmiş 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 web geliştiricileri 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 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üne bakın.
invalid_grant
Kod doğrulayıcı ve sorgulama kodu kullanıyorsanız code_callenge
parametresi geçersiz veya eksiktir. code_challenge
parametresinin doğru ayarlandığından emin olun.
Bir erişim jetonunu yenilerken jetonun süresi dolmuş veya jetonu geçersiz hale gelmiş olabilir. Kullanıcının kimliğini yeniden doğrulayın ve yeni jetonlar almak için kullanıcıdan izin isteyin. Bu hatayı görmeye devam ediyorsanız uygulamanızın doğru 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 pageiçindeki yetkili yönlendirme URI'lerini inceleyin.
İletilen redirect_uri
, istemci türü için geçersiz olabilir.
redirect_uri
parametresi, kullanımdan kaldırılan ve artık desteklenmeyen OAuth bant dışı (OOB) akışını ifade edebilir. Entegrasyonunuzu güncellemek için taşıma rehberini inceleyin.
4. Adım: OAuth 2.0 sunucu yanıtını işleme
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ş tokuş edebilirsiniz.
5. Adım: Yenileme ve erişim jetonları için yetkilendirme kodu değiş tokuşu yapın
Bir erişim jetonuyla ilgili yetkilendirme kodunu 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 pagekaynağından alınan istemci kimliği. |
client_secret |
API Console Credentials pageöğesinden 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 API Console
Credentials page içinde projenizde 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, kısa ömürlü erişim jetonu ve 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 saniye cinsinden kalan ömrü. |
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ı hakkında 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 kadar geçerlidir. Yenilenen jetonları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ış ve büyük/küçük harfe duyarlı dizelerin listesi olarak belirtilir. |
token_type |
Döndürülen jetonun türü. Şu anda bu alanın değeri her zaman Bearer olarak ayarlanmıştı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/drive.metadata.readonly", "refresh_token": "1//xEoDL4iW3cxlI7yDbSRFYNG01kVKM2C-259HOF2aQbI" }
Google API'lerini çağırma
Uygulamanız erişim jetonu aldıktan sonra, bu API'nin gerektirdiği erişim kapsamlarının verilmesi durumunda jetonu, belirli bir kullanıcı hesabı adına bir Google API'sine çağrı yapmak için kullanabilirsiniz. Bunu yapmak için access_token
sorgu parametresi veya Authorization
HTTP üst bilgisi Bearer
değeri ekleyerek API isteğine bir erişim jetonu ekleyin. Sorgu dizeleri sunucu günlüklerinde görüldüğü için, mümkün olduğunda HTTP üst bilgisi 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 bilgisi kullanılarak
drive.files
uç noktasına (Drive Dosyalar API'si) yapılan bir ç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
Kimliği doğrulanmış kullanıcı için access_token
sorgu dizesi parametresini kullanarak aynı API'ye yapılan bir çağrıyı 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 bilgi seçeneğini kullanan bir örneği burada bulabilirsiniz (tercih edilen):
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 düzenli olarak dolar ve ilgili API isteği için geçersiz kimlik bilgisi haline gelir. Jetonla ilişkili kapsamlar için çevrimdışı erişim isteğinde bulunduysanız kullanıcıdan izin istemeden (kullanıcının mevcut olmadığı zamanlar da 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ği gönderir:
Alanlar | |
---|---|
client_id |
API Consolehesabından alınan istemci kimliği. |
client_secret |
API Consoleöğesinden alınan istemci gizli anahtarı.
(client_secret ; Android, iOS veya Chrome uygulamaları olarak
kaydedilen istemcilerden gelen istekler için geçerli değildir.)
|
grant_type |
OAuth 2.0 spesifikasyonunda açıklandığı 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ının 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" }
Gönderilecek yenileme jetonu sayısı sınırlıdır. İstemci/kullanıcı kombinasyonu başına ve tüm istemcilerde kullanıcı başına bir adet sınır uygulanı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 istiyorsa bu sınırlarla karşılaşabilirsiniz. Bu durumda, eski yenileme jetonlarının çalışması durur.
Jetonları iptal etme
Bazı durumlarda 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 Hesabınıza erişimi olan üçüncü taraf site ve uygulamaların site veya uygulama erişimini kaldırma destek dokümanına bakın.
Bir uygulamanın kendisine verilen erişimi programatik olarak iptal etmesi de mümkündür. Kullanıcının iptal etmesi, bir uygulamayı kaldırması veya uygulama için gereken API kaynaklarının önemli ölçüde değişmesi halinde programatik iptal işlemi ö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ğinde bulunur ve jetonu bir parametre olarak ekler:
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
durum kodu, hata koduyla birlikte döndürülür.
Diğer Okumalar
IETF Mevcut En İyi Uygulaması Yerel Uygulamalar için OAuth 2.0, burada belgelenen en iyi uygulamaların çoğunu oluşturur.