Google Hesabı Bağlantısı, Google Hesabı sahiplerinin hizmetlerinize hızlı, sorunsuz ve güvenli bir şekilde bağlanmasını ve Google ile veri paylaşmasını sağlar.
Bağlı Hesapla Oturum Açma, Google Hesapları hizmetinize bağlı olan kullanıcılar için Google ile One Tap ile Oturum Açma özelliğini etkinleştirir. Kullanıcılar, kullanıcı adlarını ve şifrelerini yeniden girmek zorunda kalmadan tek tıklamayla oturum açabildikleri için bu özellik kullanıcı deneyimini iyileştirir. Ayrıca, kullanıcıların hizmetinizde yinelenen hesaplar oluşturma olasılığını da azaltır.
Şartlar
Bağlı Hesapla Oturum Açma özelliğini uygulamak için aşağıdaki şartları karşılamanız gerekir:
- OAuth 2.0 yetkilendirme kodu akışını destekleyen bir Google Hesabı OAuth Bağlama uygulamanız olmalıdır. OAuth uygulamanız aşağıdaki uç noktaları içermelidir:
- yetkilendirme uç noktası ile yetkilendirme isteklerini işleyin.
- Erişim ve yenileme jetonu isteklerini işlemek için token uç noktası.
- Bağlı hesap oturum açma işlemi sırasında kullanıcıya gösterilen, bağlı kullanıcıyla ilgili temel hesap bilgilerini almak için userinfo uç noktası.
- Android uygulamanız varsa
İşleyiş şekli
Ön koşul : Kullanıcı, Google Hesabını daha önce hizmetinizdeki hesabına bağlamış olmalıdır.
- Tek Dokunuşla Oturum Açma akışında bağlı hesapları göstermeyi etkinleştirirseniz.
- Kullanıcıya, bağlı hesabıyla hizmetinizde oturum açma seçeneği sunan bir One Tap ile Oturum Açma istemi gösterilir.
- Kullanıcı bağlı hesapla devam etmeyi seçerse Google, bir yetkilendirme kodu kaydetmek için jeton uç noktanıza bir istek gönderir. İstek, hizmetiniz tarafından verilen kullanıcının erişim jetonunu ve bir Google yetkilendirme kodunu içerir.
- Google yetkilendirme kodunu, kullanıcının Google Hesabı hakkında bilgi içeren bir Google kimlik jetonuyla değiştirirsiniz.
- Akış sona erdiğinde uygulamanız bir kimlik jetonu da alır ve kullanıcıyı uygulamanızda oturum açtırmak için bu jetonu, sunucunuz tarafından alınan kimlik jetonundaki kullanıcı tanımlayıcısıyla eşleştirirsiniz.
Android uygulamanızda Bağlı Hesapla Oturum Açma özelliğini uygulama
Android uygulamanızda Bağlı Hesapla Oturum Açma özelliğini desteklemek için Android uygulama kılavuzundaki talimatları uygulayın.
Google'dan gelen yetkilendirme kodu isteklerini işleme
Google, kullanıcının kimlik jetonuyla değiştirdiğiniz bir yetkilendirme kodunu kaydetmek için jeton uç noktanıza bir POST isteği gönderir. İstek, kullanıcının erişim jetonunu ve Google tarafından verilen bir OAuth2 yetkilendirme kodunu içerir.
Yetkilendirme kodunu kaydetmeden önce, erişim jetonunun Google'a sizin tarafınızdan verildiğini (client_id
ile tanımlanır) doğrulamanız gerekir.
HTTP İsteği
Örnek istek
POST /token HTTP/1.1
Host: server.example.com
Content-Type: application/x-www-form-urlencoded
code=GOOGLE_AUTHORIZATION_CODE
&grant_type=urn:ietf:params:oauth:grant-type:reciprocal
&client_id=CLIENT_ID
&client_secret=CLIENT_SECRET
&access_token=ACCESS_TOKEN
Jeton değişimi uç noktanız aşağıdaki istek parametrelerini işleyebilmelidir:
Jeton uç noktası parametreleri | |
---|---|
code |
Zorunlu Google OAuth2 yetkilendirme kodu |
client_id |
Zorunlu Google'a gönderdiğiniz istemci kimliği |
client_secret |
Zorunlu Google'a verdiğiniz istemci gizli anahtarı |
access_token |
Zorunlu Google'a verdiğiniz erişim jetonu. Kullanıcının bağlamını almak için bunu kullanırsınız |
grant_type |
Zorunlu Değer urn:ietf:params:oauth:grant-type:reciprocal olarak AYARLANMALIDIR |
Jeton değişimi uç noktanız, POST isteğine aşağıdakileri yaparak yanıt vermelidir:
access_token
'ün,client_id
tarafından tanımlanan Google'a verildiğini doğrulayın.- İstek geçerliyse ve kimlik doğrulama kodu bir Google kimliği jetonuyla başarıyla değiştirildiyse HTTP 200 (Tamam) yanıtıyla, istek geçersizse HTTP hata koduyla yanıt verin.
HTTP Yanıtı
Başarılı
HTTP 200 OK durum kodunu döndürme
Örnek başarı yanıtı
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store
Pragma: no-cache
{}
Hatalar
Geçersiz bir HTTP isteği olması durumunda aşağıdaki HTTP hata kodlarından birini kullanarak yanıt verin:
HTTP Durum Kodu | Metin | Açıklama |
---|---|---|
400 | {"error": "invalid_request"} |
İstekte bir parametre eksik olduğundan sunucu isteği işlemeye devam edemiyor. Bu durum, istek desteklenmeyen bir parametre içeriyorsa veya bir parametreyi tekrarlıyorsa da döndürülebilir. |
401 | {"error": "invalid_request"} |
İstemci kimlik doğrulaması başarısız oldu (ör. istek geçersiz bir istemci kimliği veya sırrı içeriyorsa) |
401 | {"error": "invalid_token"}
Yanıt üstbilgisinde "WWW-Authentication: Bearer" kimlik doğrulama isteğinde bulunun |
İş ortağı erişim jetonu geçersiz. |
403 | {"error": "insufficient_permission"}
Yanıt üstbilgisinde "WWW-Authentication: Bearer" kimlik doğrulama isteğinde bulunun |
İş ortağı erişim jetonu, karşılıklı OAuth'u gerçekleştirmek için gerekli kapsamları içermiyor |
500 | {"error": "internal_error"} |
Sunucu hatası |
Hata yanıtı aşağıdaki alanları içermelidir :
Hata yanıtı alanları | |
---|---|
error |
Zorunlu Hata dizesi |
error_description |
Hatanın kullanıcılar tarafından okunabilir açıklaması |
error_uri |
Hatayla ilgili daha fazla ayrıntı sağlayan URI |
Örnek 400 hatası yanıtı
HTTP/1.1 400 Bad Request
Content-Type: application/json;charset=UTF-8
Cache-Control: no-store
Pragma: no-cache
{
"error": "invalid_request",
"error_description": "Request was missing the 'access_token' parameter."
}
Kimlik jetonu için yetkilendirme kodu değiş tokuşu yapma
Aldığınız yetkilendirme kodunu, kullanıcının Google Hesabı ile ilgili bilgileri içeren bir Google kimliği jetonuyla değiştirmeniz gerekir.
Yetkilendirme kodunu Google kimlik jetonuyla değiştirmek için https://oauth2.googleapis.com/token
uç noktasını çağırın ve aşağıdaki parametreleri ayarlayın:
İstek alanları | |
---|---|
client_id |
Zorunlu API Konsolu Kimlik Bilgileri sayfasından alınan istemci kimliği. Bu genellikle Google Uygulamasında Yeni İşlemler adlı kimlik bilgisidir. |
client_secret |
Zorunlu API Konsolu Kimlik Bilgileri sayfasından alınan istemci gizli anahtarı |
code |
Zorunlu İlk istekte gönderilen yetkilendirme kodu |
grant_type |
Zorunlu OAuth 2.0 spesifikasyonunda tanımlandığı gibi bu alanın değeri authorization_code olarak ayarlanmalıdır. |
Örnek istek
POST /oauth2/v4/token HTTP/1.1
Host: www.googleapis.com
Content-Type: application/x-www-form-urlencoded
code=GOOGLE_AUTHORIZATION_CODE
&grant_type=authorization_code
&client_id=GOOGLE_CLIENT_ID
&client_secret=GOOGLE_CLIENT_SECRET
Google, bu isteğe kısa süreli bir erişim jetonu ve yenileme jetonu içeren bir JSON nesnesi döndürerek yanıt verir.
Yanıtta aşağıdaki alanlar bulunur:
Yanıt alanları | |
---|---|
access_token |
Uygulamanızın, Google API isteğinin yetkilendirilmesi için gönderdiği Google tarafından verilen erişim jetonu |
id_token |
Kimlik jetonu, kullanıcının Google Hesabı bilgilerini içerir. Yanıtı doğrulama bölümü, kimlik jetonu yanıtının kodunu çözme ve doğrulama hakkında ayrıntılar içerir. |
expires_in |
Erişim jetonunun kalan kullanım ömrü (saniye cinsinden) |
refresh_token |
Yeni bir erişim jetonu almak için kullanabileceğiniz jeton. Yenileme jetonları, kullanıcı erişimi iptal edene kadar geçerlidir. |
scope |
Bu alanın değeri, Bağlı Hesap Oturum Açma kullanım alanı için her zaman openid olarak ayarlanır. |
token_type |
Döndürülen jeton türü. Bu alanın değeri şu anda her zaman Bearer olarak ayarlanır. |
Örnek yanıt
HTTP/1.1 200 OK
Content-type: application/json; charset=utf-8
{
"access_token": "Google-access-token",
"id_token": "Google-ID-token",
"expires_in": 3599,
"token_type": "Bearer",
"scope": "openid",
"refresh_token": "Google-refresh-token"
}
POST /oauth2/v4/token HTTP/1.1
Host: www.googleapis.com
Content-Type: application/x-www-form-urlencoded
code=Google authorization code
&grant_type=authorization_code
&client_id=Google client id
&client_secret=Google client secret