Bağlı Hesapta Oturum Açma

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:
  • Android uygulamanız varsa

İşleyiş şekli

Ön koşul : Kullanıcı, Google Hesabını daha önce hizmetinizdeki hesabına bağlamış olmalıdır.

  1. Tek Dokunuşla Oturum Açma akışında bağlı hesapları göstermeyi etkinleştirirseniz.
  2. 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.
  3. 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.
  4. Google yetkilendirme kodunu, kullanıcının Google Hesabı hakkında bilgi içeren bir Google kimlik jetonuyla değiştirirsiniz.
  5. 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.
Bağlı Hesapta Oturum Açma.
Şekil 1. Bağlı Hesap Oturum Açma Akışları. Kullanıcının cihazında oturumu açık birden fazla hesabı varsa bir hesap seçici görebilir ve yalnızca bağlı bir hesap seçerse Bağlı Hesap Oturum Açma görünümüne yönlendirilir.

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

Kimlik jetonu yanıtını doğrulama