Hizmetiniz, OAuth 2.0 örtülü akışını desteklemek için HTTPS üzerinden bir yetkilendirme uç noktası sunar. Bu uç nokta, kimlik doğrulama ve veri erişimi için kullanıcılardan izin alma işlemlerinden sorumludur. Yetkilendirme uç noktası, henüz oturum açmamış kullanıcılarınıza bir oturum açma kullanıcı arayüzü sunar ve istenen erişim için izni kaydeder.
Bir Google uygulamasının hizmetinizin yetkili API'lerinden birini çağırması gerektiğinde Google, bu uç noktayı kullanarak kullanıcılarınızdan bu API'leri onlar adına çağırmak için izin alır.
Google Hesabı bağlantısı: OAuth Dolaylı Akışı
Aşağıdaki sıra diyagramı, Kullanıcı, Google ve hizmetinizin uç noktaları arasındaki etkileşimleri ayrıntılı olarak açıklar.
Roller ve sorumluluklar
Aşağıdaki tabloda, Google Hesabı bağlantısı (GAL) OAuth dolaylı akışındaki aktörlerin rolleri ve sorumlulukları tanımlanmaktadır. GAL'de Google'ın OAuth istemcisi, hizmetinizin ise kimlik/hizmet sağlayıcısı olarak hareket ettiğini unutmayın.
| İşlemi gerçekleştiren / Bileşen | GAL Rolü | Sorumluluklar |
|---|---|---|
| Google Uygulaması / Sunucusu | OAuth İstemcisi | Akışı başlatır, tarayıcı yönlendirmesini kullanarak erişim jetonunu alır ve hizmetinizin API'lerine erişmek için güvenli bir şekilde saklar. |
| Yetkilendirme uç noktanız | Yetkilendirme Sunucusu | Kullanıcılarınızın kimliğini doğrular, izinlerini alır ve doğrudan Google'a uzun süreli erişim jetonları verir. |
| Google Yönlendirme URI'si | Geri Arama Uç Noktası | Kullanıcı yönlendirmesini, URL parçasında access_token ve state değerleriyle birlikte yetkilendirme hizmetinizden alır. |
Google tarafından başlatılan tipik bir OAuth 2.0 dolaylı akış oturumu aşağıdaki akışa sahiptir:
- Google, yetkilendirme uç noktanızı kullanıcının tarayıcısında açar. Kullanıcı, henüz oturum açmadıysa oturum açar ve Google'a, henüz izin vermediyse API'nizle verilerine erişme izni verir.
- Hizmetiniz bir erişim jetonu oluşturur ve bunu Google'a döndürür. Bunun için kullanıcının tarayıcısını, isteğe erişim jetonu eklenmiş şekilde Google'a yönlendirin.
- Google, hizmetinizin API'lerini çağırır ve her isteğe erişim jetonunu ekler. Hizmetiniz, erişim jetonunun Google'a API'ye erişim yetkisi verdiğini doğrular ve ardından API çağrısını tamamlar.
Uygulama Tarifi
Örtülü akışı uygulamak için aşağıdaki adımları uygulayın.
1. adım: Yetkilendirme isteklerini işleme alın
Google, hesap bağlama işlemini başlattığında kullanıcıyı yetkilendirme uç noktanıza yönlendirir. Ayrıntılı protokol sözleşmeleri ve parametre koşulları için Yetkilendirme Uç Noktası'na bakın.
İsteği işlemek için aşağıdaki işlemleri yapın:
İsteği doğrulayın:
client_iddeğerinin Google'a atanan istemci kimliğiyle eşleştiğini onaylayın.redirect_urideğerinin beklenen Google yönlendirme URL'siyle eşleştiğini doğrulayın:none https://oauth-redirect.googleusercontent.com/r/YOUR_PROJECT_ID https://oauth-redirect-sandbox.googleusercontent.com/r/YOUR_PROJECT_IDresponse_typedeğerinintokenolduğunu doğrulayın.
Kullanıcının kimliğini doğrulayın:
- Kullanıcının hizmetinizde oturum açıp açmadığını kontrol edin.
- Kullanıcı oturum açmadıysa oturum açma veya kaydolma akışınızı tamamlamasını isteyin.
Erişim jetonu oluşturma:
- Kullanıcı ve istemciyle ilişkilendirilmiş, tahmin edilemeyen benzersiz bir erişim jetonu oluşturun.
Google'a geri yönlendirme:
- Tarayıcıyı
redirect_uriiçinde sağlanan URL'ye yönlendirin. - URL parçasına (karma) aşağıdaki parametreleri ekleyin:
access_token: Oluşturduğunuz erişim jetonu.token_type:bearerolmalıdır.state: Google'dan alınan değiştirilmemiş durum değeri.
- Tarayıcıyı
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-Authenticateyanıt üstbilgisini kullanarak HTTP 401 Yetkilendirilmemiş hatası döndürün. Aşağıda kullanıcı bilgileri hata yanıtı örneği verilmiştir: 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.HTTP/1.1 401 Unauthorized WWW-Authenticate: error="invalid_token", error_description="The Access Token expired"
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:
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.{ "sub": "USER_UUID", "email": "EMAIL_ADDRESS", "given_name": "FIRST_NAME", "family_name": "LAST_NAME", "name": "FULL_NAME", "picture": "PROFILE_PICTURE", }userinfo uç nokta yanıtı subSisteminizdeki kullanıcıyı tanımlayan benzersiz bir kimlik. emailKullanı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.