Hesaplar, sektör standardı OAuth 2.0 örtülü ve yetkilendirme kodu akışları kullanılarak bağlanır. Hizmetiniz OAuth 2.0 uyumlu yetkilendirmeyi ve jeton değişimi uç noktalarını desteklemelidir.
Dolaylı akışta Google, yetkilendirme uç noktanızı kullanıcının tarayıcısında açar. Başarılı bir şekilde oturum açtıktan sonra Google'a uzun süreli erişim jetonu döndürürsiniz. Bu erişim jetonu artık Google'dan gönderilen her isteğe dahil edilir.
Yetkilendirme kodu akışında iki uç noktaya ihtiyacınız vardır:
Yetkilendirme uç noktası, oturum açmamış kullanıcılara oturum açma kullanıcı arayüzünü sunar. Yetkilendirme uç noktası, kullanıcıları kaydetmek için kısa süreli bir yetkilendirme kodu da oluşturur.
İki tür exchange'den sorumlu olan jeton değişimi uç noktası:
- Uzun süreli yenileme jetonu ve kısa süreli erişim jetonu için bir yetkilendirme kodu değiştirir. Bu exchange, kullanıcı hesap bağlama akışından geçtiğinde gerçekleşir.
- Kısa ömürlü erişim jetonu için uzun ömürlü yenileme jetonu alır. Bu exchange, Google'ın süresi dolmuş olduğundan yeni bir erişim jetonuna ihtiyacı olduğunda gerçekleşir.
OAuth 2.0 akışı seçme
Doğrudan akışın uygulanması daha basit olsa da Google, dolaylı akış tarafından verilen erişim jetonlarının süresinin hiçbir zaman sona ermemesini önerir. Bunun nedeni, gizli jetonla bir jetonun süresi dolduktan sonra kullanıcının hesabını tekrar bağlamaya zorlamasıdır. Güvenlik nedeniyle jetonun geçerlilik süresinin dolması gerekiyorsa yetkilendirme kodu akışını kullanmanızı kesinlikle öneririz.
Tasarım yönergeleri
Bu bölümde, OAuth bağlantı akışları için barındırdığınız kullanıcı ekranıyla ilgili tasarım gereksinimleri ve öneriler açıklanmaktadır. Platform, Google uygulaması tarafından çağrıldıktan sonra Google sayfasında oturum açma ve kullanıcıya hesap bağlama izni ekranını gösterir. Kullanıcı, hesapların bağlanmasına izin verdikten sonra tekrar Google'ın uygulamasına yönlendirilir.
Şartlar
- Kullanıcının hesabının Google Home veya Google Asistan gibi belirli bir Google ürününe değil Google'a bağlanacağını bildirmeniz gerekir.
Öneriler
Aşağıdakileri yapmanızı öneririz:
Google'ın Gizlilik Politikası'nı inceleyin. İzin ekranına Google'ın Gizlilik Politikası'nın bir bağlantısını ekleyin.
Paylaşılacak veriler. Google'a hangi verilerle neden ihtiyaç duyduğunu açıklamak için açık ve net bir dil kullanın.
Harekete geçirici mesaj net olarak ifade edilsin. İzin ekranınızda "Kabul et ve bağla" gibi net bir harekete geçirici mesaj belirtin. Bunun nedeni, kullanıcıların hesaplarını bağlamak için hangi verileri Google ile paylaşmaları gerektiğini anlamalarıdır.
İptal etme. Bağlantı oluşturmamayı seçen kullanıcıların geri dönmesi veya iptal etmesi için bir yol sağlayın.
Oturum açma işlemini temizleyin. Kullanıcıların Google hesaplarında oturum açmak için kullanıcı adları ve şifre alanları veya Google ile oturum açma gibi açık yöntemleri olduğundan emin olun.
Bağlantıyı kaldırma özelliği. Kullanıcıların bağlantısını kaldırabilecekleri bir mekanizma sunun (ör. platformunuzdaki hesap ayarlarının URL'si). Alternatif olarak, kullanıcıların bağlı hesaplarını yönetebilecekleri bir Google Hesabı bağlantısı ekleyebilirsiniz.
Kullanıcı hesabını değiştirme yetkisi. Kullanıcıların hesaplarını değiştirmeleri için bir yöntem önerin. Bu, özellikle kullanıcıların birden fazla hesabı varsa faydalıdır.
- Kullanıcının hesap değiştirmek için izin ekranını kapatması gerekiyorsa Google'a kurtarılabilir bir hata gönderin. Böylece, OAuth bağlantısı ve örtük akışla istediğiniz hesapta oturum açabilir.
Logonuzu ekleyin. Onay ekranında şirket logonuzu görüntüleyin. Logonuzu yerleştirmek için stil yönergelerinizi kullanın. Google'ın logosunu da göstermek isterseniz Logolar ve ticari markalar konusuna bakın.
Projeyi oluşturma
Hesap bağlamayı kullanmak amacıyla projenizi oluşturmak için:
- Go to the Google API Console.
- Proje oluştur'u tıklayın.
- Bir ad girin veya oluşturulan öneriyi kabul edin.
- Kalan alanları onaylayın veya düzenleyin.
- Oluştur'u tıklayın.
Proje kimliğinizi görüntülemek için:
- Go to the Google API Console.
- Projenizi açılış sayfasındaki tabloda bulun. Proje kimliği Kimlik sütununda görünür.
OAuth İzin Ekranınızı yapılandırın
Google Hesabı bağlama işlemi, uygulamanın verilerine erişmek isteyen kullanıcılara, istedikleri veri türlerini ve geçerli şartları bildiren bir izin ekranı içerir. Google API istemci kimliği oluşturmadan önce OAuth izin ekranınızı yapılandırmanız gerekir.
- Google API'leri konsolunun OAuth izin ekranı sayfasını açın.
- İstenirse az önce oluşturduğunuz projeyi seçin.
"OAuth izin ekranı" sayfasında formu doldurun ve "Save" (Kaydet) düğmesini tıklayın.
Uygulama adı: İzin isteyen uygulamanın adı. Ad, uygulamanızı doğru şekilde yansıtmalı ve kullanıcıların başka bir yerde gördüğü uygulama adıyla tutarlı olmalıdır. Uygulama adı, Hesap Bağlama izin ekranında gösterilir.
Uygulama logosu: Kullanıcı rızası ekranında kullanıcıların uygulamanızı tanımasına yardımcı olacak bir resim. Logo, Hesap bağlama izin ekranında ve hesap ayarlarında gösterilir.
Destek e-postası: Kullanıcıların rızalarıyla ilgili soruları için sizinle iletişime geçmesi içindir.
Google API'leri için kapsamlar: Kapsamlar, uygulamanızın kullanıcınızın özel Google verilerine erişmesine olanak tanır. Google Hesabı Bağlama kullanım alanı için varsayılan kapsam (e-posta, profil, openid) yeterlidir. Herhangi bir hassas kapsam eklemeniz gerekmez. Kapsamları önceden değil de aşamalı olarak erişim talep etmek genellikle en iyi uygulamadır. Daha fazla bilgi edinin.
Yetkili alanlar: Sizi ve kullanıcılarınızı korumak için Google, yalnızca OAuth kullanarak kimlik doğrulaması yapan uygulamaların Yetkilendirilen Alanları kullanmasına izin verir. Uygulamalarınızın bağlantıları Yetkilendirilen Alanlar'da barındırılmalıdır. Daha fazla bilgi edinin.
Uygulama Ana Sayfası bağlantısı: Uygulamanız için ana sayfa. Yetkilendirilen Alanda barındırılmalıdır.
Uygulama Gizlilik Politikası bağlantısı: Google Hesabı bağlama izin ekranında gösterilir. Yetkilendirilen Alanda barındırılmalıdır.
Uygulama Hizmet Şartları bağlantısı (İsteğe bağlı): Yetkilendirilen bir alanda barındırılmalıdır.
Şekil 1. Google Hesabı ile Hayali Bir Uygulama İçin İzin Ekranını Bağlama, Tunery
"Doğrulama Durumu"nu kontrol edin, başvurunuzun doğrulanması gerekiyorsa başvurunuzu doğrulama için göndermek üzere "Doğrulama İçin Gönder" düğmesini tıklayın. Ayrıntılar için OAuth doğrulama gereksinimleri sayfasına bakın.
OAuth sunucunuzu uygulama
Yetkilendirme kodu akışının OAuth 2.0 sunucu uygulaması şunlardan oluşur: iki uç noktanız vardır. İlk uç nokta kimlik doğrulama uç noktasıdır. Bu, kullanıcılara veri erişimi için kullanıcılardan izin almalarını Yetkilendirme uç noktası, oturum açmamış kullanıcılar için oturum açma kullanıcı arayüzünü sunar ve istenen erişim. İkinci uç nokta ise üçüncü uç noktadır. Jeton adı verilen ve kullanıcıya aşağıdakileri yapma yetkisi veren şifrelenmiş dizeleri elde etmek için kullanılır. hizmetinize erişin.
Bir Google uygulamasının, hizmetinizin API'lerinden birini çağırması gerektiğinde Google, kullanıcılarınızdan bu API'leri çağırmak için izin almak üzere bu uç noktaları bir araya getirin. oluşturabilirsiniz.
Google tarafından başlatılan bir OAuth 2.0 yetkilendirme kodu akışı oturumunda, takip eden akış:
- Google, yetkilendirme uç noktanızı kullanıcının tarayıcısında açar. Akış bir işlem için yalnızca ses içeren bir cihazda başlatıldığında Google yürütme sürecidir.
- Kullanıcı oturum açmış değilse oturum açar ve Google'a şunu yapması için izin verir: Henüz izin vermediyse verilerine API'nizle erişme.
- Hizmetiniz bir yetkilendirme kodu oluşturur ve Google'a geri gönderir. Yapılacaklar Bu nedenle, kullanıcının tarayıcısını, yetkilendirme koduyla birlikte tekrar Google'a yönlendirin. ekleyebilirsiniz.
- Google, yetkilendirme kodunu jeton değişimi uç noktanıza gönderir. Bu işlem kodun orijinalliğini doğrular ve bir erişim jetonu ve yenileme jetonu. Erişim jetonu, hizmetinizin Google tarafından API'lere erişmek için kimlik bilgisi olarak kabul eder. Yenileme jetonu uzun ömürlü yeni erişim jetonları almak üzere saklayabileceği ve kullanabileceği bir jeton olarak sona erecektir.
- Kullanıcı hesap bağlama akışını tamamladıktan sonra, isteği bir erişim jetonu içeriyor.
Yetkilendirme isteklerini işleme
OAuth 2.0 yetkilendirme kodunu kullanarak hesap bağlama işlemi gerçekleştirmeniz gerektiğinde akışında, Google, kullanıcıyı yetkilendirme uç noktanıza bir istek göndererek aşağıdaki parametreleri içerir:
Yetkilendirme uç noktası parametreleri | |
---|---|
client_id |
Google'a atadığınız İstemci Kimliği. |
redirect_uri |
Bu isteğe yanıt gönderdiğiniz URL. |
state |
yönlendirme URI'si. |
scope |
İsteğe bağlı: Google'ın yetkilendirme istediği veriler. |
response_type |
Yanıtta döndürülecek değerin türü. OAuth 2.0 için
yetkilendirme kodu akışı, yanıt türü her zaman code olur.
|
user_locale |
Google Hesabı dil ayarı RFC5646 biçimi, içeriğinizi kullanıcının tercih ettiği dilde yerelleştirmek için kullanılır. |
Örneğin, yetkilendirme uç noktanız
https://myservice.example.com/auth
, talep aşağıdaki gibi görünebilir:
GET https://myservice.example.com/auth?client_id=GOOGLE_CLIENT_ID&redirect_uri=REDIRECT_URI&state=STATE_STRING&scope=REQUESTED_SCOPES&response_type=code&user_locale=LOCALE
Yetkilendirme uç noktanızın oturum açma isteklerini işlemesi için aşağıdakileri yapın için şu adımları izleyin:
client_id
bilgisinin, Google'a atadığınız İstemci Kimliği ile eşleştiğini veredirect_uri
bilgisinin, Google tarafından hizmetiniz için sağladığı yönlendirme URL'si ile eşleştiğini doğrulayın. Bu kontroller, onay alınmasının önlenmesi açısından önemlidir. istenmeyen veya yanlış yapılandırılmış istemci uygulamalarına erişim. Birden fazla OAuth 2.0 akışları,response_type
öğesinincode
olduğunu da onaylayın.- Kullanıcının hizmetinizde oturum açıp açmadığını kontrol edin. Kullanıcı oturum açmamışsa hizmetinizin oturum açma veya kayıt akışını tamamlayın.
- Google'ın API'nize erişmek için kullanması için bir yetkilendirme kodu oluşturun. Yetkilendirme kodu herhangi bir dize değeri olabilir, ancak benzersiz bir şekilde kullanıcıyı, jetonun ait olduğu istemciyi ve kodun geçerlilik bitiş tarihini ve tahmin edilebilir olmamalıdır. Genellikle, her ay web sitesinde sonra süresi dolan kodları kullanır.
redirect_uri
parametresiyle belirtilen URL'nin şu formu kullanın:https://oauth-redirect.googleusercontent.com/r/YOUR_PROJECT_ID https://oauth-redirect-sandbox.googleusercontent.com/r/YOUR_PROJECT_ID
- Kullanıcının tarayıcısını
redirect_uri
parametresinden yararlanın. Alacağınız yetkilendirme kodunu URL'nin otomatik olarak oluşturulmuş ve orijinal, değiştirilmemiş durum değerinicode
vestate
parametrelerini ekleyerek. Bu, sonuç URL'sinin örneği:https://oauth-redirect.googleusercontent.com/r/YOUR_PROJECT_ID?code=AUTHORIZATION_CODE&state=STATE_STRING
Jeton değişimi isteklerini işleme
Hizmetinizin jeton değişimi uç noktası iki tür jetondan sorumludur takaslar:
- Erişim jetonları ve yenileme jetonları için yetkilendirme kodlarını gönderip alın
- Erişim jetonları için yenileme jetonları değişimi
Jeton değişimi istekleri aşağıdaki parametreleri içerir:
Jeton değişimi uç nokta parametreleri | |
---|---|
client_id |
İstek kaynağını Google olarak tanımlayan bir dize. Bu dize sisteminizde Google'ın benzersiz tanımlayıcısı olarak kayıtlı olmalıdır. |
client_secret |
Hizmetiniz için Google'a kaydettiğiniz gizli dize. |
grant_type |
Değişen jetonun türü. Ya da
authorization_code veya refresh_token . |
code |
grant_type=authorization_code olduğunda bu parametre
Google'ın oturum açma işleminizden veya jeton değişiminizden aldığı kod
uç nokta. |
redirect_uri |
grant_type=authorization_code olduğunda bu parametre
İlk yetkilendirme isteğinde kullanılan URL. |
refresh_token |
grant_type=refresh_token olduğunda bu parametre
Google'ın jeton değişimi uç noktanızdan aldığı yenileme jetonu. |
Erişim jetonları ve yenileme jetonları için yetkilendirme kodlarını gönderip alın
Kullanıcı oturum açtıktan ve yetkilendirme uç noktanız kısa ömürlü bir uyarı döndürdükten yetkilendirme kodu Google'a gönderilirse Google, jeton değişiminize bir istek gönderir uç nokta aracılığıyla yetkilendirme kodunu erişim jetonu ve yenileme için değiştirin jeton.
Bu istekler için grant_type
değeri authorization_code
ve
code
değeri, daha önce verdiğiniz yetkilendirme kodunun değeridir
Google'a otomatik olarak gönderin. Aşağıda,
erişim jetonu ve yenileme jetonu için yetkilendirme kodu:
POST /token HTTP/1.1 Host: oauth2.example.com Content-Type: application/x-www-form-urlencoded client_id=GOOGLE_CLIENT_ID&client_secret=GOOGLE_CLIENT_SECRET&grant_type=authorization_code&code=AUTHORIZATION_CODE&redirect_uri=REDIRECT_URI
Bir erişim jetonu ve yenileme jetonuyla yetkilendirme kodları değişimi yapmak için
jeton değişimi uç noktası, aşağıdaki komutu çalıştırarak POST
isteklerine yanıt verir
için şu adımları izleyin:
client_id
öğesinin, istek kaynağını yetkili bir kaynak olarak tanımladığını doğrulayın veclient_secret
değerinin beklenen değerle eşleştiğinden emin olun.- Yetkilendirme kodunun geçerli olduğunu, süresinin dolmadığını ve İstekte belirtilen istemci kimliği, yetkilendirme kodu.
redirect_uri
parametresi tarafından belirtilen URL'nin aynı olduğunu onaylayın ilk yetkilendirme isteğinde kullanılan değerle aynıdır.- Yukarıdaki ölçütlerin tümünü doğrulayamazsanız bir HTTP döndürün
Gövde olarak
{"error": "invalid_grant"}
kullanılırken 400 Hatalı İstek hatası. - Aksi takdirde, yenileme oluşturmak için yetkilendirme kodundaki kullanıcı kimliğini kullanın. jetonu ve erişim jetonu bulunur. Bu jetonlar herhangi bir dize değeri olabilir, ancak kullanıcıyı ve jetonun ait olduğu istemciyi benzersiz bir şekilde temsil etmelidir ve tahmin edilebilir olmamalıdır. Erişim jetonları için Jetonu girmeniz gerekir. Bu işlem genellikle siz jetonun verilmesinden bir saat sonradır. Yenileme jetonlarının geçerlilik süresi sona ermez.
- HTTPS yanıtının gövdesinde aşağıdaki JSON nesnesini döndürün:
{ "token_type": "Bearer", "access_token": "ACCESS_TOKEN", "refresh_token": "REFRESH_TOKEN", "expires_in": SECONDS_TO_EXPIRATION }
Google, kullanıcı için erişim jetonunu ve yenileme jetonunu depolar ve kayıtlar erişim jetonunun süresinin dolması. Erişim jetonunun süresi dolduğunda Google, yenileme jetonunu kullanın.
Erişim jetonları için yenileme jetonları değişimi
Bir erişim jetonunun süresi dolduğunda Google, jeton değişiminize bir istek gönderir yeni bir erişim jetonuyla yenileme jetonu değişimi yapmasına olanak tanır.
Bu istekler için grant_type
değeri refresh_token
ve
refresh_token
değeri, daha önce verdiğiniz yenileme jetonunun değeridir.
Google'a dokunun. Aşağıda, bir yenileme jetonu değiş tokuşuna ilişkin bir istek örneği verilmiştir
şu adımları izleyin:
POST /token HTTP/1.1 Host: oauth2.example.com Content-Type: application/x-www-form-urlencoded client_id=GOOGLE_CLIENT_ID&client_secret=GOOGLE_CLIENT_SECRET&grant_type=refresh_token&refresh_token=REFRESH_TOKEN
Yenileme jetonunu bir erişim jetonuyla değiştirmek için jeton değişimi uç noktanız
POST
isteklerine aşağıdaki adımları uygulayarak yanıt verir:
client_id
öğesinin, istek kaynağını Google olarak tanımladığını veclient_secret
değerinin beklenen değerle eşleştiğinden emin olun.- Yenileme jetonunun geçerli olduğunu ve İstek, yenileme jetonuyla ilişkili istemci kimliğiyle eşleşir.
- Yukarıdaki ölçütlerin tümünü doğrulayamazsanız HTTP 400 döndürün
Gövde olarak
{"error": "invalid_grant"}
kullanıldığında hatalı İstek hatası oluştu. - Aksi takdirde, erişim oluşturmak için yenileme jetonundaki kullanıcı kimliğini kullanın. jeton. Bu jetonlar herhangi bir dize değeri olabilir, ancak benzersiz olmaları gerekir jetonun ait olduğu kullanıcıyı ve müşteriyi temsil etmeli, tahmin edilebilir. Erişim jetonları için jetonun geçerlilik bitiş zamanını da kaydedin. genellikle jetonu göndermenizden bir saat sonra gönderilir.
- HTTPS gövdesinde aşağıdaki JSON nesnesini döndürün
yanıt:
{ "token_type": "Taşıyıcı", "access_token": "ACCESS_TOKEN", "expires_in": SECONDS_TO_EXPIRATION }
Kullanıcı bilgileri isteklerini işleme
userinfo uç noktası, bağlı kullanıcıyla ilgili hak taleplerini döndüren, OAuth 2.0 korumalı bir kaynaktır. Kullanıcı bilgileri uç noktasını uygulamak ve barındırmak, aşağıdaki kullanım alanları hariç isteğe bağlıdır:
- Google One Tap ile Bağlı Hesapta Oturum Açma.
- AndroidTV'de sorunsuz abonelik.
Erişim jetonu, jeton uç noktanızdan başarıyla alındıktan sonra Google, bağlı kullanıcıyla ilgili temel profil bilgilerini almak için kullanıcı bilgileri uç noktanıza bir istek gönderir.
kullanıcı bilgileri uç nokta istek başlıkları | |
---|---|
Authorization header |
Taşıyıcı türündeki erişim jetonu. |
Örneğin, kullanıcı bilgileri uç noktanız
https://myservice.example.com/userinfo
, talep aşağıdaki gibi görünebilir:
GET /userinfo HTTP/1.1 Host: myservice.example.com Authorization: Bearer ACCESS_TOKEN
Kullanıcı bilgileri uç noktanızın istekleri işlemesi için aşağıdaki adımları uygulayın:
- Yetkilendirme başlığından erişim jetonunu çıkarın ve erişim jetonuyla ilişkilendirilmiş kullanıcının bilgilerini döndürün.
- Erişim jetonu geçersizse
WWW-Authenticate
yanıt üstbilgisini kullanarak HTTP 401 Yetkilendirilmemiş hatası döndürün. Aşağıda kullanıcı bilgileri hata yanıtı örneği verilmiştir:HTTP/1.1 401 Unauthorized WWW-Authenticate: error="invalid_token", error_description="The Access Token expired"
. Bağlama işlemi sırasında 401 Yetkilendirilmedi veya başka bir başarısız hata yanıtı döndürülürse bu hata düzeltilemez, alınan jeton silinir ve kullanıcının bağlantı oluşturma işlemini yeniden başlatması gerekir. Erişim jetonu geçerliyse HTTPS gövdesinde aşağıdaki JSON nesnesiyle HTTP 200 yanıtını döndürün ve HTTP 200 yanıtını alın yanıt:
{ "sub": "USER_UUID", "email": "EMAIL_ADDRESS", "given_name": "FIRST_NAME", "family_name": "LAST_NAME", "name": "FULL_NAME", "picture": "PROFILE_PICTURE", }
Kullanıcı bilgileri uç noktanız HTTP 200 başarılı yanıtı döndürürse alınan jeton ve hak talepleri kullanıcının Google Hesabı'na kaydedilir.userinfo uç nokta yanıtı sub
Sisteminizdeki kullanıcıyı tanımlayan benzersiz bir kimlik. email
Kullanıcının e-posta adresi. given_name
İsteğe bağlı: Kullanıcının adı. family_name
İsteğe bağlı: Kullanıcının soyadı. name
İsteğe bağlı: Kullanıcının tam adı. picture
İsteğe bağlı: Kullanıcının profil resmi.
Uygulamanızı doğrulama
Sen kullanarak uygulanmasını doğrulamak OAuth 2.0 Bahçesi aracı.
Araçta aşağıdaki adımları uygulayın:
- Yapılandırma tıklayın OAuth 2.0 Yapılandırma penceresini açın.
- OAuth akış alanında, istemci tarafı seçin.
- OAuth Endpoints alanında, Özel'i seçin.
- OAuth 2.0 uç noktanızı ve Google'a atadığınız müşteri kimliğini ilgili alanlarda belirtin.
- Adım 1 bölümünde, herhangi bir Google kapsamları seçmeyin. Bunun yerine, bu alanı boş bırakın veya sunucunuz için geçerli bir kapsam (veya OAuth kapsamları kullanmıyorsanız rastgele bir dize) yazın. İşiniz bittiğinde, Yetkilendirme API'leri tıklayın.
- Aşama 2 ile Aşama 3 bölümlerde OAuth 2.0 akışı geçmesi ve istendiği gibi her aşama çalıştığını doğrulamak.
Sen kullanarak uygulanmasını doğrulamak Google Hesap Bağlama Demo aracı.
Araçta aşağıdaki adımları uygulayın:
- Oturum Google düğmesiyle tıklayın.
- Bağlamak istediğiniz hesabı seçin.
- Hizmet kimliğini girin.
- İsteğe bağlı olarak, erişim isteyeceğiniz bir veya daha fazla kapsam girin.
- Başlangıç Demo tıklayın.
- İstendiğinde, bağlantı isteğini kabul edip reddedebileceğinizi onaylayın.
- Platformunuza yönlendirildiğinizi onaylayın.