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:
- 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 bir API'yi etkinleştirmek için:
- Open the API Library içinde Google API Console.
- If prompted, select a project, or create a new one.
- 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.
- 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ş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.
- 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 uygulamaları ve Universal Windows Platform (UWP) uygulamaları için özel bir URI şeması önerilir.
Android
- Android uygulama türünü seçin.
- OAuth istemcisi için bir ad girin. Bu ad, müşteriyi tanımlamak için projenizde Credentials page gösterilir.
- Android uygulamanızın paket adını girin. Bu değer, uygulama manifest dosyanızdaki
<manifest>
öğesininpackage
özelliğinde belirtilir. - 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ündeSHA1
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.
- Oluştur'u tıklayın.
iOS
- iOS uygulama türünü seçin.
- OAuth istemcisi için bir ad girin. Bu ad, müşteriyi tanımlamak için projenizde Credentials page gösterilir.
- 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.
- (İ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.
- iOS veya iPadOS cihazınızda Apple App Store uygulamasını açın.
- Uygulamanızı arayın.
- Paylaş düğmesini (kare ve ok yukarı simgesi) seçin.
- Bağlantıyı Kopyala'yı seçin.
- 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
- (İ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.
- Oluştur'u tıklayın.
ultra geniş bant
- Universal Windows Platform uygulama türünü seçin.
- OAuth istemcisi için bir ad girin. Bu ad, müşteriyi tanımlamak için projenizde Credentials page gösterilir.
- 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.
- 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"" 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.
|
düz | Kod giriş 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
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 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ürmediğ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 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_challenge_method |
Önerilen
Yetkilendirme kodu değişimi sırasında kullanılacak |
||||||
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 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. |
||||||
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 |
Ö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%3A//127.0.0.1%3A9004& 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.