Bu dokümanda, telefon, tablet ve bilgisayar gibi cihazlara yüklenen uygulamaların Google'ın OAuth 2.0 uç noktalarını kullanarak Google API'leri
OAuth 2.0, kullanıcıların belirli verileri bir uygulamayla paylaşmasına olanak tanırken kullanıcı adlarını, şifreleri ve diğer bilgileri gizli tutabilirsiniz. Örneğin, bir uygulama OAuth 2.0'ı kullanarak şuradan izin alabilir: kullanıcıların Google Drive'larında dosya depolamasına izin verir.
Yüklü uygulamalar ayrı ayrı cihazlara dağıtılır ve bu uygulamaların farklı cihazlarda olduğu varsayılır sır tutamaz. Google API'lerine kullanıcı uygulamadayken veya Uygulama arka planda çalışıyor demektir.
Bu yetkilendirme akışı, web sunucusu uygulamaları için de geçerlidir. Aralarındaki temel fark yüklü uygulamaların sistem tarayıcısını açması ve işlenecek bir yerel yönlendirme URI'si sağlaması gerekir Google'ın yetkilendirme sunucusundan alınan yanıtları.
Alternatifler
Mobil uygulamalarda Google ile Oturum Açma'yı şunun için kullanmayı tercih edebilirsiniz: Android veya iOS Google ile Oturum Açma İstemci kitaplıkları, kimlik doğrulamayı ve kullanıcı yetkilendirmesini yürütür ve aşağıda açıklanan alt düzey protokolden daha hızlı uygulanır.
Sistem tarayıcısını desteklemeyen veya sınırlı girişe sahip cihazlarda çalışan uygulamalar için kameralar veya yazıcılar gibi farklı cihaz ve özelliklerde TV'ler ve Cihazlar veya TV'lerde ve Sınırlı Giriş Cihazlarında oturum açın.
Kitaplıklar ve örnekler
OAuth 2.0 akışını uygulamanıza yardımcı olması için aşağıdaki kitaplıkları ve örnekleri öneririz aşağıda açıklanmıştır:
- Android için AppAuth kitaplığı
- iOS için AppAuth kitaplığı
- Uygulamalar için OAuth: Windows Örnekler
Ön koşullar
Projeniz için API'leri etkinleştirin
Google API'lerini çağıran herhangi bir uygulamanın, bu API'ları API Console
Projenizde bir API'yi etkinleştirmek için:
- Open the API Library Google API Console.
- If prompted, select a project, or create a new one.
- API Library , mevcut tüm API'leri ürüne göre gruplandırılmış olarak listeler. ve ne kadar popüler olduğunu öğreneceğiz. Etkinleştirmek istediğiniz API listede görünmüyorsa aramayı kullanarak öğesini bulabilir veya ait olduğu ürün ailesinde Tümünü Göster'i tıklayabilirsiniz.
- Etkinleştirmek istediğiniz API'yi seçin ve 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 yetkilendirme kimlik bilgilerine sahip olması gerekir kimliği tanımlayabileceksiniz. Aşağıdaki adımlarda, projenizin kimlik bilgilerini oluşturmalarını sağlar. Böylece uygulamalarınız kimlik bilgilerini kullanarak API'lere erişebilir bilgileri görürsünüz.
- 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 kullandığı istemci türleri ve yönlendirme yetkilendirme sunucusunun desteklediğini gösterir. İşletmeniz için önerilen istemci türünü seçin OAuth istemcinizi adlandırın ve formdaki diğer alanları aşağıdaki şekilde ayarlayın: uygun olmalıdır.
Android
- Android uygulama türünü seçin.
- OAuth istemcisi için bir ad girin. Bu ad, projenizin Credentials page değerlendirmelisiniz.
- Android uygulamanızın paket adını girin. Bu değer,
<manifest>
öğesininpackage
özelliği inceleyebilirsiniz. - Uygulama dağıtımının SHA-1 imza sertifikası parmak izini girin.
- Uygulamanızda Google Play'den uygulama imzalama için, SHA-1'i kopyalayın. parmak iziniz var.
- Kendi anahtar deponuzu ve imzalama anahtarlarınızı yönetiyorsanız keytool yardımcı programını kullanın
sertifika bilgilerini okunabilir bir biçimde yazdırmak için Java'ya dahil edilmiştir. Kopyala
SHA1
değeri içinCertificate fingerprints
keytool çıkışını kullanır. Görüntüleyin İstemcinizin Kimliklerini Doğrulama Android için Google API'leri dokümanlarında bulabilirsiniz.
- (İsteğe bağlı) Android cihazınızın sahipliğini doğrulayın bir uygulamadır.
- Oluştur'u tıklayın.
iOS
- iOS uygulama türünü seçin.
- OAuth istemcisi için bir ad girin. Bu ad projenizin Credentials page değerlendirmelisiniz.
- Uygulamanızın paket tanımlayıcısını girin. Paket kimliği, CFBundleIdentifier anahtarı uygulamanızın bilgi özellik listesi kaynak dosyasına (info.plist) ekleyebilirsiniz. Değer Genel bölmesinde veya İmzalama ve Özellikler bölmesi Xcode proje düzenleyicisi. Paket kimliği, uygulamanın Uygulama Bilgileri sayfası Apple'ın App Store Connect sitesi.
- (İsteğe bağlı)
Uygulamanız Apple'ın App Store'unda yayınlanıyorsa uygulamanızın App Store kimliğini girin. Mağaza Kimliği: Her Apple App Store URL'sine eklenen sayısal bir dizedir.
- Şunu açın: Apple App Store uygulaması iOS veya iPadOS cihazınızda.
- 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 kısmıdır.
Örnek:
https://apps.apple.com/app/google/id284815942
- (İsteğe bağlı)
Ekip kimliğinizi girin. Görüntüleyin Ekip kimliğinizi bulma Daha fazla bilgi için Apple Geliştirici Hesabı belgelerini inceleyin.
- Oluştur'u tıklayın.
UWP
- Evrensel Windows Platformu uygulama türünü seçin.
- OAuth istemcisi için bir ad girin. Bu ad projenizin Credentials page değerlendirmelisiniz.
- Uygulamanızın 12 karakterli Microsoft Store kimliğini girin. Bu değeri, Microsoft İş Ortağı Merkezi uygulamasında Uygulama kimliği sayfasını ziyaret edin.
- Oluştur'u tıklayın.
UWP uygulamaları için özel URI şeması 39 karakterden uzun olamaz.
Ö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.
ziyaret edin. Android'de özel URI şemaları kullanmaya alternatifŞunu kullanın: Android SDK'sı için Google ile Oturum Açma Böylece, OAuth 2.0 yanıtını doğrudan uygulamanıza dağıtarak yönlendirme URI'si.
Android için Google ile Oturum Açma SDK'sına geçiş yapma
Şu anda Android'de OAuth entegrasyonunuz için özel bir şema kullanıyorsanız şunları yapmanız gerekir: önerilen Google ile Oturum Açma hizmetine tam geçiş yapmak için aşağıdaki işlemleri tamamlayın: Android SDK'sı:
- Kodunuzu, Google ile Oturum Açma SDK'sını kullanacak şekilde güncelleyin.
- Google API Konsolu'nda özel şema desteğini devre dışı bırakın.
Google ile Oturum Açma Android SDK'sına geçiş yapmak için aşağıdaki adımları uygulayın:
-
Google ile Oturum Açma Android SDK'sını kullanmak için kodunuzu güncelleyin:
-
Nerede olduğunuzu belirlemek için kodunuzu inceleyin
Google'ın OAuth 2.0 sunucusuna bir istek göndererek; özel bir şema kullanıyorsanız isteğiniz aşağıdaki gibi olacaktı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 örneğe bakın. Bkz. Biçim hakkında daha fazla bilgi içinredirect_uri
parametre tanımı ait olduğunu varsayalım. -
Aşağıdaki koşulları karşılayan
scope
veclient_id
istek parametrelerini not edin: Google ile Oturum Açma SDK'sını yapılandırmanız gerekir. -
Şunu izleyin:
Google ile Oturum Açma özelliğini Android uygulamanıza entegre etmeye başlayın
talimatları uygulayın. Bu
Arka uç sunucunuzun OAuth 2.0 istemci kimliğini yeniden kullanacağınız şekilde alın.
önceki adımdan aldığınız
client_id
. -
Şunu izleyin:
Sunucu Tarafı API erişimini etkinleştirme
bakın. Aşağıdaki adımlar bu kapsamdadır:
-
getServerAuthCode
yöntemini kullanarak kapsamları da belirleyebilirsiniz. - Erişim için kullanmak üzere yetkilendirme kodunu uygulamanızın arka ucuna gönderin ve yenile jeton.
- Kullanıcı adına Google API'lerine çağrı yapmak için alınan erişim jetonunu kullanın.
-
-
Nerede olduğunuzu belirlemek için kodunuzu inceleyin
Google'ın OAuth 2.0 sunucusuna bir istek göndererek; özel bir şema kullanıyorsanız isteğiniz aşağıdaki gibi olacaktır:
-
Google API Konsolu'nda özel şema desteğini devre dışı bırakın:
- Şuraya gidin: OAuth 2.0 kimlik bilgileri Android istemcinizi seçin.
- Gelişmiş Ayarlar bölümüne gidin, Özel URI Şeması'nı etkinleştir onay kutusunu işaretleyip Kaydet'i tıklayın. özel URI şeması desteğini devre dışı bırakın.
Özel URI şeması etkinleştiriliyor
Önerilen alternatif işe yaramazsa uygulamanız için özel URI şemalarını etkinleştirebilirsiniz Android istemcisi için şu talimatları uygulayın:- Şuraya gidin: OAuth 2.0 kimlik bilgileri listesi ve Android istemcinizi seçin.
- Gelişmiş Ayarlar bölümüne gidin, Özel URI Şeması'nı etkinleştir onay kutusunu işaretleyin ve etkinleştirmek için Kaydet'i tıklayın. özel URI şema desteği.
Şunu kullanın: Chrome Identity API Böylece, OAuth 2.0 yanıtını doğrudan uygulamanıza dağıtarak yönlendirme URI'si.
Uygulama sahipliğini doğrulama (Android, Chrome)
Uygulamanın kimliğine bürünme riskini azaltmak için uygulamanızın sahipliğini doğrulayabilirsiniz.
Android
Doğrulama sürecini tamamlamak için Google Play Geliştirici Hesabınızı kullanabilirsiniz varsa ve uygulamanız Google Play Console. Aşağıdakiler tüm şartların karşılanması gerekir:
- Google Play Console'da paket adını ve SHA-1 imza sertifikası dijital parmak izini kullanın, böylece Android OAuth istemcisi doğrulama işlemini tamamlayın.
- Şurada uygulama için Yönetici iznine sahip olmanız gerekir: Google Play Console Daha fazla bilgi Google Play Console'da erişim yönetimi hakkında daha fazla bilgi edinin.
Android istemcisinin Uygulama Sahipliğini Doğrula bölümünde Sahipliği Doğrula düğmesini tıklayarak doğrulama işlemini tamamlayın.
Doğrulama başarılı olursa işlemin başarılı olduğunu onaylamak için bir bildirim gösterilir sürecine göz atalım. Aksi takdirde bir hata istemi gösterilir.
Başarısız doğrulama sorununu gidermek için lütfen aşağıdakileri deneyin:
- Doğruladığınız uygulamanın Google Play Console'da kayıtlı bir uygulama olduğundan emin olun.
- Şurada uygulama için Yönetici iznine sahip olduğunuzdan emin olun: Google Play Console
Chrome
Doğrulama sürecini tamamlamak için Chrome Web Mağazası Geliştirici hesabınızı kullanırsınız. Doğrulama işleminin başarılı olması için aşağıdaki koşulların karşılanması gerekir:
- Chrome Web Mağazası Geliştirici Kontrol Paneli tamamladığınız Chrome Uzantısı OAuth istemcisiyle aynı öğe kimliğine sahip olmalıdır doğrulama işleminden geçiyor.
- Chrome Web Mağazası öğesi için bir yayıncı olmanız gerekir. Daha fazla bilgi erişim yönetimi hakkında daha fazla bilgiyi Chrome Web Mağazası Geliştirici Kontrol Paneli'nde bulabilirsiniz.
Chrome Uzantı istemcisinin Uygulama Sahipliğini Doğrula bölümünde doğrulama işlemini tamamlamak için Sahipliği Doğrula düğmesini tıklayın.
Not: Doğrulama işlemini tamamlamadan önce lütfen birkaç dakika bekleyin: hesabınıza erişim izni verebilirsiniz.
Doğrulama başarılı olursa işlemin başarılı olduğunu onaylamak için bir bildirim gösterilir sürecine göz atalım. Aksi takdirde bir hata istemi gösterilir.
Başarısız doğrulama sorununu gidermek için lütfen aşağıdakileri deneyin:
- Chrome Web Mağazası Geliştirici Kontrol Paneli'nde doğrulama işlemini tamamladığınız Chrome Uzantısı OAuth istemcisiyle aynı öğe kimliği.
- Uygulamanın yayıncısı olduğunuzdan, yani bağımsız yayıncı olduğunuzdan emin olun. veya uygulamanın grup yayıncısının bir üyesi olabilir. Daha fazla bilgi erişim yönetimi hakkında daha fazla bilgiyi Chrome Web Mağazası Geliştirici Kontrol Paneli'nde bulabilirsiniz.
- Grup yayıncı listenizi yeni güncellediyseniz grup yayıncı üyeliğinin mevcut olduğunu listesi, Chrome Web Mağazası Geliştirici Kontrol Paneli'nde senkronize edilir. Daha fazla bilgi yayıncı üyelik listenizi senkronize etme hakkında.
Geri Döngü IP adresi (macOS, Linux, Windows masaüstü)
Yetkilendirme kodunu bu URL'yi kullanarak almak için uygulamanızın yerel web sunucusu. Bu, tüm platformlarda olmasa da birçok platformda mümkündür. Ancak platformunuz destekliyorsa, yetkilendirme kodunu almak için önerilen mekanizma budur.
Uygulamanız yetkilendirme yanıtını aldığında, en iyi kullanılabilirlik için şuna göre yanıt vermelidir: kullanıcıya tarayıcıyı kapatıp uygulamanıza dönmesini söyleyen bir HTML sayfası görüntüleme.
Önerilen kullanım | macOS, Linux ve Windows masaüstü (Universal Windows Platform 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 istemesini sağlarken aynı zamanda da Böylece kullanıcılar, uygulamanıza izin verdikleri erişim miktarını kontrol edebilir. Böylece, talep edilen kapsamların sayısı ile gerçekleşme olasılığı arasında ters bir ilişki Kullanıcı izni alma.
OAuth 2.0 yetkilendirmesini uygulamaya başlamadan önce kapsamları tanımlamanızı öneririz. uygulamanızın erişim izni olması gerekir.
OAuth 2.0 API Kapsamları dokümanı, Google API'lerine erişmek için kullanabileceğiniz kapsamların listesini görebilirsiniz.
OAuth 2.0 erişim jetonları alma
Aşağıdaki adımlarda uygulamanızın, Google OAuth 2.0 sunucusuyla nasıl etkileşimde bulunduğunu Kullanıcı adına API isteği gerçekleştirmek için kullanıcının izni. Uygulamanızda bu özellik bulunmalıdır kullanıcı yetkilendirmesi gerektiren bir Google API isteğini yürütmeden önce izin vermesi gerekir.
1. Adım: Kod doğrulayıcı ve sorgulama oluşturun
Google, Code Exchange için Kanıt Anahtarı'nı destekler. (PKCE) protokolünü kullanıma sunduk. Her müşteri için benzersiz bir kod doğrulayıcı oluşturulur. yetkilendirme isteği ve bunun "code_challenge" adlı dönüştürülmüş değeri, yetkilendirme sunucusuna gidin.
Kod doğrulayıcıyı oluşturma
code_verifier
, ayrılmamış
karakterler [A-Z] / [a-z] / [0-9] / "-" / "." / "_" / "~", en az 43 karakter uzunluğunda
ve maksimum 128 karakter uzunluğunda olmalıdır.
Kod doğrulayıcı, değerin tahmin edilmesini zorlaştıracak kadar entropiye sahip olmalıdır.
Kod sorgulamasını oluşturma
Kod sorgulaması oluşturmanın iki yöntemi desteklenir.
Kod Meydan Okuması Oluşturma Yöntemleri | |
---|---|
S256 (önerilir) | Kod zorluğu, kodun Base64URL (dolgusuz) olarak kodlanmış SHA256 karmasıdır
doğrulayıcı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 bir istek gönderin
Kullanıcı yetkilendirmesi almak için Google'ın yetkilendirme sunucusuna şu adresten bir istek gönderin:
https://accounts.google.com/o/oauth2/v2/auth
Bu uç nokta, etkin oturum aramalarını işler.
kullanıcının kimliğini doğrular ve kullanıcının iznini alır. Uç noktaya yalnızca SSL üzerinden erişilebilir ve
HTTP (SSL olmayan) bağlantıları reddeder.
Yetkilendirme sunucusu, şu yükleme işlemi için aşağıdaki sorgu dizesi parametrelerini destekler: uygulamalar:
Parametreler | |||||||
---|---|---|---|---|---|---|---|
client_id |
Zorunlu
Uygulamanızın istemci kimliği. Bu değeri API Console. Credentials page. |
||||||
redirect_uri |
Zorunlu
Google'ın yetkilendirme sunucusunun uygulamanıza nasıl yanıt göndereceğini belirler. Her biri 100'den az gösterim alan yüklü uygulamalar tarafından kullanılabilen çeşitli yönlendirme seçenekleri vardır ve Belirli bir yönlendirme yöntemiyle yetkilendirme kimlik bilgileri göz önünde bulundurun. Değer, OAuth 2.0 için yetkili yönlendirme URI'lerinden biriyle tam olarak eşleşmelidir
ve
API Console.
Credentials page. Bu değer
izin verilmiş URI'da Aşağıdaki tabloda, şunun 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
CEVAP boşlukla ayrılmış uygulamanızın erişebileceği kaynakları tanımlayan temsil eder. Bu değerler, Google'ın belirtir. Kapsamlar, uygulamanızın yalnızca ihtiyaç duyduğu kaynaklara erişim istemesini sağlar aynı zamanda kullanıcıların, uygulamanıza erişebilecekleri erişim miktarını kontrol etmelerine de bir uygulamadır. Dolayısıyla, talep edilen kapsamların sayısı arasında ters bir ilişki vardır ve kullanıcının izin alma olasılığı bulunur. |
||||||
code_challenge |
Önerilen
Sunucu tarafı olarak kullanılacak kodlanmış |
||||||
code_challenge_method |
Önerilen
Kullanılacak bir |
||||||
state |
Önerilen
Uygulamanızın,
yetkilendirme sunucusunun yanıtıyla birlikte çalışır.
Sunucu, Bu parametreyi, kullanıcıyı web sitesine yönlendirmek gibi çeşitli amaçlar için kullanabilirsiniz.
uygulamanızda doğru kaynağı kullanma, nonce gönderme ve siteler arası isteği azaltma
Sahtekarlık. |
||||||
login_hint |
İsteğe bağlı
Uygulamanız hangi kullanıcının kimlik doğrulaması yapmaya çalıştığını biliyorsa bu parametreyi kullanabilir Google Kimlik Doğrulama Sunucusu'na bir ipucu sağlamak için kullanılır. Sunucu, bu ipucunu oturum açma formundaki e-posta alanını önceden doldurarak veya uygun çoklu giriş oturumunu seçin. Parametre değerini bir e-posta adresi veya |
Örnek yetkilendirme URL'leri
Aşağıdaki sekmeler, farklı yönlendirme URI'si seçenekleri için örnek yetkilendirme URL'lerini gösterir.
URL'ler, redirect_uri
parametresinin değeri dışında aynı. URL'ler
gerekli response_type
ve client_id
parametrelerini de içerir
olarak tanımlar.state
Her URL,
okunabilirlik.
Özel URI şeması
https://accounts.google.com/o/oauth2/v2/auth? scope=email%20profile& 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=email%20profile& 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ğini belirler. Burada aşamasında, Google, uygulamanızın adını ve Google API'sini gösteren bir izin penceresi ve hizmetlerin kullanılabilmesi için gereken izinleri . İlgili içeriği oluşturmak için kullanılan daha sonra kullanıcı, uygulamanız tarafından istenen bir veya daha fazla kapsama erişim izni verebilir ya da isteği reddetmelidir.
Başvurunuzun sizden yanıt almayı beklediği için bu aşamada herhangi bir işlem yapması gerekmez. Google'ın, herhangi bir erişim izni verilip verilmediğini gösteren OAuth 2.0 sunucusu. Bu yanıtın açıklaması adım adım anlatacağız.
Hatalar
Google'ın OAuth 2.0 yetkilendirme uç noktasına gönderilen istekler, kullanıcılara yönelik hata mesajları gösterebilir. ile başlar. Sık karşılaşılan hata kodları ve önerilenler aşağıda listelenmiştir.
admin_policy_enforced
Google Hesabı, şu politikaları nedeniyle istenen bir veya daha fazla kapsamı yetkilendiremedi: Google Workspace yöneticilerine ulaşın. Google Workspace Yöneticisi yardım makalesine göz atın Hangi üçüncü taraf ve üçüncü taraf Dahili uygulamaların Google Workspace verilerine erişmesi veya bir yöneticinin tüm kapsamlara ya da hassas ve gizli erişim OAuth istemci kimliğinize açıkça erişim verilene kadar kısıtlanan kapsamları kısıtlamayın.
disallowed_useragent
Yetkilendirme uç noktası, Google'ın OAuth 2.0 Politikaları.
Android
Android geliştiricileri,
android.webkit.WebView
.
Geliştiriciler bunun yerine
Android için Google ile Oturum Açma veya COPPA Vakfı'nın
Android için AppAuth
Bir Android uygulaması genel bir web bağlantısını açtığında, web geliştiricileri bu hatayla karşılaşabilir. Bir kullanıcı Google'ın OAuth 2.0 yetkilendirme uç noktasına tıkladığında, sitenizi ziyaret edin. Geliştiriciler, genel bağlantıların her iki türü de içeren işletim sistemi Android Uygulama Bağlantıları işleyicileri veya varsayılan tarayıcı uygulamasını kullanabilirsiniz. İlgili içeriği oluşturmak için kullanılan Android Özel Sekmeleri desteklenen bir seçenektir.
iOS
iOS ve macOS geliştiricileri, şurada yetkilendirme isteklerini açarken bu hatayla karşılaşabilir:
WKWebView
.
Geliştiriciler bunun yerine şunun gibi iOS kitaplıklarını kullanmalıdır:
iOS için Google ile Oturum Açma veya COPPA Vakfı'nın
iOS için AppAuth
Web geliştiricileri, iOS veya macOS uygulaması
Google'ın OAuth 2.0 yetkilendirme uç noktasına giden bir kullanıcı otomatik olarak
sitenizi ziyaret edin. Geliştiriciler, genel bağlantıların
her iki türü de içeren işletim sistemi
Geçiş Bağlantıları
işleyicileri veya varsayılan tarayıcı uygulamasını kullanabilirsiniz. İlgili içeriği oluşturmak için kullanılan
SFSafariViewController
desteklenen bir seçenektir.
org_internal
İstekteki OAuth istemci kimliği, belirli Google Cloud Kuruluşu. Bu yapılandırma seçeneği hakkında daha fazla bilgi için Kullanıcı türü "OAuth izin ekranınızı ayarlama başlıklı yardım makalesini inceleyebilirsiniz.
invalid_grant
Bir
kod doğrulayıcı ve
reCAPTCHA sorgulaması, code_callenge
parametresi geçersiz veya eksiktir. Lütfen
code_challenge
parametresi doğru şekilde ayarlanmış.
Bir erişim jetonunu yenilerken jetonun süresi dolmuş veya jetonun üzerinde geçersiz kılınmıştır. Kullanıcının kimliğini tekrar doğrulayın ve yeni jetonlar almak için kullanıcıdan izin isteyin. Devam ediyorsanız görmek için uygulamanızın doğru yapılandırıldığından ve kullanarak istekte bulunabilirsiniz. Aksi takdirde, kullanıcı hesabında silinmiş veya devre dışı bırakılmış olabilir.
redirect_uri_mismatch
Yetkilendirme isteğinde iletilen redirect_uri
, yetkili bir kuruluşla eşleşmiyor
OAuth istemci kimliğinin yönlendirme URI'si. Şuradaki yetkili yönlendirme URI'lerini inceleyin:
Google API Console Credentials page
İletilen redirect_uri
, istemci türü için geçersiz olabilir.
redirect_uri
parametresi,
desteği sonlandırıldı ve artık desteklenmiyor. Daha fazla bilgi için
taşıma rehberi
inceleyebilirsiniz.
invalid_request
Talebinizle ilgili bir sorun oluştu. Bunun birkaç nedeni olabilir:
- İstek düzgün biçimlendirilmemiş
- İstekte gerekli parametreler eksikti
- İstek, Google'ın desteklemediği bir yetkilendirme yöntemi kullanıyor. OAuth'unuzu doğrulayın entegrasyonun önerilen bir entegrasyon yöntemi kullanması
- Yönlendirme URI'si için özel bir şema kullanılır : Hata mesajını görürseniz Chrome uygulamalarında veya Özel URI şeması desteklenmez Android istemciniz için etkinleştirilmemişse özel bir URI kullandığınız anlamına gelir. Chrome uygulamalarında desteklenmeyen ve varsayılan olarak devre dışı bırakılmış Android Özel URI şeması hakkında daha fazla bilgi edinin alternatifler
4. Adım: OAuth 2.0 sunucu yanıtını yönetin
Uygulamanızın yetkilendirme yanıtını alma şekli
yönlendirme URI şeması seçin. Düzen ne olursa olsun
yanıt bir yetkilendirme kodu (code
) ya da hata içerecek
(error
). Örneğin, error=access_denied
, kullanıcının
adlı kullanıcı isteği reddetti.
Kullanıcı uygulamanıza erişim izni verirse yetkilendirme kodunu erişim jetonunu ve yenileme jetonunu sağlamanız gerekir.
5. Adım: Yenileme ve erişim için yetkilendirme kodunu değiştirin jetonlar
Yetkilendirme kodunu erişim jetonuyla değiştirmek için
https://oauth2.googleapis.com/token
uç noktasını seçin ve şu parametreleri ayarlayın:
Alanlar | |
---|---|
client_id |
API Consolearacından alınan istemci kimliği Credentials page. |
client_secret |
API Consoleöğesinden alınan istemci gizli anahtarı Credentials page. |
code |
İlk istekten döndürülen yetkilendirme kodu. |
code_verifier |
Şurada oluşturduğunuz kod doğrulayıcı 1. Adım: |
grant_type |
OAuth 2.0'da tanımlandığı gibi
spesifikasyonu, bu alanın değeri authorization_code olarak ayarlanmalıdır. |
redirect_uri |
API Console.
Verilen süre için Credentials page
client_id . |
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 ömürlü erişim içeren bir JSON nesnesi döndürerek yanıt verir. jetonu ve yenileme jetonu bulunur.
Yanıt aşağıdaki alanları içerir:
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ğinizde bir kimlik kapsamı,
openid , profile veya email gibi. Değer
belirtir. |
refresh_token |
Yeni bir erişim jetonu almak için kullanabileceğiniz jeton. Yenileme jetonları Kullanıcı erişimi iptal ederse. 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ı dizeler içerir. |
token_type |
Döndürülen jetonun türü. Şu anda bu alanın değeri her zaman
Bearer |
Aşağıdaki snippet örnek bir yanıt gösterir:
{ "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, bu jetonu kullanarak bir Google
Belirli bir kullanıcı adına API
kullanıcı hesabı(API'nin gerektirdiği erişim kapsamları verildiyse) ile birlikte çalışır. Bunu yapmak için
API'ye yapılan bir istekte, access_token
sorgusu ekleyerek erişim jetonunu
parametresi veya Authorization
HTTP başlığı Bearer
değeri olabilir. Mümkünse
HTTP üstbilgisi tercih edilir, çünkü sorgu dizeleri sunucu günlüklerinde görünür olma eğilimindedir. Çoğu zaman
Google API'lerine yapılan çağrılarınızı ayarlamak için bir istemci kitaplığı kullanabilirsiniz (örneğin,
Drive Files API'yi çağırma).
Tüm Google API'lerini deneyebilir ve kapsamlarını şuradan görüntüleyebilirsiniz: OAuth 2.0 Playground (OAuth 2.0 Oyun Alanı).
HTTP GET örnekleri
Bir
drive.files
Authorization: Bearer
HTTP kullanan uç nokta (Drive Files API)
başlık 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
Aşağıda, kimliği doğrulanmış kullanıcı için aynı API'ye access_token
kullanılarak yapılan bir çağrı verilmiştir.
sorgu dizesi parametresi:
GET https://www.googleapis.com/drive/v2/files?access_token=access_token
curl
örnek
Bu komutları curl
komut satırı uygulamasıyla test edebilirsiniz. Bir
HTTP üstbilgisi seçeneğini kullanan bir örnek (tercih edilen):
curl -H "Authorization: Bearer access_token" https://www.googleapis.com/drive/v2/files
Alternatif olarak, sorgu dizesi parametre seçeneği şu şekildedir:
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 sona erer ve ilgili API isteği için geçersiz kimlik bilgileri haline gelir. Siz Kullanıcı izin istemeden erişim jetonunu yenileyebilir (kullanıcının mevcut değil) girmeniz gerekir.
Uygulamanız, erişim jetonunu yenilemek için HTTPS POST
gönderir
yetkilendirme sunucusuna (https://oauth2.googleapis.com/token
) gönderdiğiniz istek üzerine
aşağıdaki parametreleri içerir:
Alanlar | |
---|---|
client_id |
API Consoleöğesinden alınan istemci kimliği. |
client_secret |
API Consoleöğesinden alınan istemci gizli anahtarı.
(client_secret , aşağıdaki şekilde kayıtlı müşterilerden gelen istekler için geçerli değildir:
Android, iOS veya Chrome uygulamaları için geçerlidir.)
|
grant_type |
Farklı
OAuth 2.0 spesifikasyonu,
bu alanın değeri refresh_token olarak ayarlanmalıdır. |
refresh_token |
Yetkilendirme kodu exchange'inden 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 bir örnek yanıt:
{ "access_token": "1/fFAGRNJru1FTz70BzhT3Zg", "expires_in": 3920, "scope": "https://www.googleapis.com/auth/drive.metadata.readonly", "token_type": "Bearer" }
Verilecek yenileme jetonlarının sayısının sınırlı olduğunu unutmayın; başına bir sınır ve tüm istemcilerde her kullanıcı için ayrı ayrı düzenleyebilirsiniz. Yenileme jetonlarını kaydetmeniz gerekir uzun süreli depolama alanına sahip olacak ve geçerli kaldıkları sürece bunları kullanmaya devam edebileceksiniz. Uygulamanız çok fazla yenileme jetonu istiyorsa bu sınırlarla karşılaşabilir. Böyle bir durumda eski yenileme jetonları çalışmayı durduracak.
Jetonu iptal etme
Bazı durumlarda, bir kullanıcı bir uygulamaya verilen erişimi iptal etmek isteyebilir. Kullanıcı erişimi iptal edebilir adresini ziyaret ederek Hesap Ayarları. Bkz. Kaldır Üçüncü taraf sitelerin site veya uygulama erişimi bölümü ve hesabınıza erişimi olan uygulamalar destek dokümanına bakın.
Bir uygulamanın, kendisine verilen erişimi programlı olarak iptal etmesi de mümkündür. Programlı iptal etme, bir kullanıcının e-posta listesinden çıktığı, bir veya sonraki bir veya bir uygulamanın gerektirdiği API kaynakları önemli ölçüde değişmiştir. Başka bir deyişle, Kaldırma sürecinin bir bölümü, izinleri önceden sağlamak için bir API isteği içerebilir. kaldırılır.
Uygulamanız, bir jetonu programlı bir şekilde iptal etmek için
https://oauth2.googleapis.com/revoke
ve jetonu parametre olarak ekler:
curl -d -X -POST --header "Content-type:application/x-www-form-urlencoded" \ https://oauth2.googleapis.com/revoke?token={token}
Bu jeton bir erişim jetonu veya yenileme jetonu olabilir. Jeton bir erişim jetonuysa ve bir yenileme jetonu varsa yenileme jetonu da iptal edilir.
İptal işlemi başarıyla tamamlanırsa yanıtın HTTP durum kodu
200
Hata koşulları için 400
ile birlikte HTTP durum kodu döndürülür
hata kodu içerir.
Ek Okumalar
The IETF Best Current Practice OAuth 2.0 for the Yerel Uygulamalar, burada belgelenen en iyi uygulamaların birçoğunu oluşturur.
Hesaplar Arası Korumayı Uygulama
Kullanıcılarınızın güvenliğini korumak için atmanız gereken ek bir adım Hesaplar Arası Google'ın Hesaplar Arası Koruma Hizmeti'ni kullanarak koruma. Bu hizmet sayesinde şunları yapabilirsiniz: uygulamanıza aşağıdaki konularda bilgi sağlayan güvenlik işlemi bildirimlerine abone olun: kullanıcı hesabında önemli değişiklikler yapabilir. Daha sonra bu bilgileri kullanarak karar verdiğinizden emin olun.
Google'ın Hesaplar Arası Koruma Hizmeti tarafından uygulamanıza gönderilen etkinlik türlerine örnek olarak aşağıdakiler 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
Bkz. Kullanıcı hesaplarını Hesaplar Arası Koruma ile koruma 'nı inceleyin. inceleyin.