OAuth ile Google Hesabı Bağlantısı Oluşturma

Hesaplar, endüstri standardı OAuth 2.0 örtük ve yetkilendirme kodu akışları kullanılarak birbirine bağlanır. Hizmetinizin OAuth 2.0 uyumlu yetkilendirmeyi ve jeton değişimi uç noktalarını desteklemesi gerekir.

Örtülü akışta Google, kullanıcının tarayıcısında yetkilendirme uç noktanızı açar. Başarılı bir şekilde oturum açtıktan sonra, Google'a uzun ömürlü bir erişim jetonu iade edersiniz. Bu erişim jetonu artık Google'dan gönderilen her talebe dahil edilmiştir.

Yetkilendirme kodu akışında iki uç noktaya ihtiyacınız vardır:

  • Yetkilendirme uç nokta da istenen erişime rekor kullanıcıların rızası için kısa ömürlü bir yetki kodunu oluşturur hediyeler oturum açma UI kullanıcılara Önceden oturum değildir. Yetkilendirme son nokta.

  • İki tür değişimden sorumlu olan jeton değişimi uç noktası:

    1. Uzun ömürlü yenileme belirteci ve kısa ömürlü erişim belirteci için bir yetkilendirme kodunu değiştirir. Bu değişim, kullanıcı hesap bağlama akışından geçtiğinde gerçekleşir.
    2. Kısa ömürlü bir erişim belirteci için uzun ömürlü yenileme belirtecini değiştirir. Bu değişim, Google'ın süresi dolduğu için yeni bir erişim jetonuna ihtiyaç duyduğunda gerçekleşir.

Bir OAuth 2.0 akışı seçin

Örtülü akışın uygulanması daha basit olsa da, Google örtük akış tarafından verilen erişim belirteçlerinin süresinin asla sona ermemesini önerir. Bunun nedeni, kullanıcının örtük akışla bir belirtecin süresi dolduktan sonra hesabını tekrar bağlamak zorunda kalmasıdır. Güvenlik nedeniyle belirteç süresinin sona ermesine ihtiyacınız varsa, bunun yerine yetkilendirme kodu akışını kullanmanızı önemle tavsiye ederiz.

Tasarım Kuralları

Bu bölümde, OAuth bağlantı akışları için barındırdığınız kullanıcı ekranına yönelik tasarım gereksinimleri ve önerileri açıklanmaktadır. Google'ın uygulaması tarafından çağrıldıktan sonra, platformunuz Google sayfasında bir oturum açma ve kullanıcıya hesap bağlama izni ekranı görüntüler. Kullanıcı, hesapları bağlama izni verdikten sonra Google'ın uygulamasına geri yönlendirilir.

Bu şekil, bir kullanıcının Google hesabını kimlik doğrulama sisteminize bağlama adımlarını gösterir. İlk ekran görüntüsü, platformunuzdan kullanıcı tarafından başlatılan bağlantıları gösterir. İkinci resim, kullanıcının Google'da oturum açtığını gösterirken üçüncüsü, kullanıcının Google hesabını uygulamanıza bağlamak için onayını ve onayını gösterir. Son ekran görüntüsü, Google uygulamasında başarılı bir şekilde bağlanmış bir kullanıcı hesabını gösterir.
Şekil 1. Kullanıcı oturumunu Google'a bağlayan hesap ve izin ekranları.

Gereksinimler

  1. Kullanıcının hesabının Google Home veya Google Assistant gibi belirli bir Google ürününe değil , Google'a bağlanacağını bildirmelisiniz.

Öneriler

Aşağıdakileri yapmanızı tavsiye ederiz:

  1. Google'ın Gizlilik Politikasını görüntüleyin. İzin ekranına Google'ın Gizlilik Politikası'na bir bağlantı ekleyin.

  2. Paylaşılacak veriler. Kullanıcıya Google'ın hangi verileri gerektirdiğini ve neden istediğini söylemek için açık ve kısa bir dil kullanın.

  3. Harekete geçirici mesajı temizleyin. İzin ekranınızda "Kabul et ve bağlantı kur" gibi net bir harekete geçirici mesaj belirtin. Bunun nedeni, kullanıcıların hesaplarını bağlamak için Google ile hangi verileri paylaşmaları gerektiğini anlamaları gerektiğidir.

  4. İptal etme yeteneği. Kullanıcıların bağlantı oluşturmamayı seçmeleri durumunda geri dönmeleri veya iptal etmeleri için bir yol sağlayın.

  5. Oturum açma sürecini temizleyin. Kullanıcıların, Google hesaplarında oturum açmak için kullanıcı adı ve şifreleri için alanlar gibi açık bir yönteme sahip olduğundan emin olun veya Google ile Oturum Açın .

  6. Bağlantıyı kaldırma yeteneği. Kullanıcıların, platformunuzdaki hesap ayarlarının URL'si gibi bağlantısını kaldırmaları için bir mekanizma sunun. Alternatif olarak, kullanıcıların bağlı hesaplarını yönetebilecekleri bir Google Hesabı bağlantısı da ekleyebilirsiniz.

  7. Kullanıcı hesabını değiştirebilme. Kullanıcıların hesaplarını değiştirmeleri için bir yöntem önerin. Bu, özellikle kullanıcılar birden fazla hesaba sahip olma eğilimindeyse faydalıdır.

    • Bir 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 kullanıcı OAuth bağlantısı ve örtük akış ile istenen hesapta oturum açabilir.
  8. Logonuzu ekleyin. Şirket logonuzu izin ekranında görüntüleyin. Logonuzu yerleştirmek için stil yönergelerinizi kullanın. Google'ın logosunu da görüntülemek isterseniz, Logolar ve ticari markalar bölümüne bakın.

Projeyi oluşturun

Hesap bağlamayı kullanmak üzere projenizi oluşturmak için:

  1. Go to the Google API Console.
  2. Proje oluştur'u tıklayın.
  3. Bir ad girin veya oluşturulan öneriyi kabul edin.
  4. Kalan alanları onaylayın veya düzenleyin.
  5. Oluştur'u tıklayın.

Proje kimliğinizi görüntülemek için:

  1. Go to the Google API Console.
  2. Projenizi açılış sayfasındaki tabloda bulun. Proje kimliği Kimlik sütununda görünür.

Google Hesabı Bağlama işlemi, kullanıcılara, verilerine erişim talep eden uygulamanın, ne tür veriler istediklerini ve geçerli olan şartları söyleyen bir izin ekranı içerir. Bir Google API istemci kimliği oluşturmadan önce OAuth izin ekranınızı yapılandırmanız gerekecektir.

  1. Google API'leri konsolunun OAuth izin ekranı sayfasını açın.
  2. İstenirse, az önce oluşturduğunuz projeyi seçin.
  3. "OAuth izin ekranı" sayfasında formu doldurun ve "Kaydet" düğmesini tıklayın.

    Uygulama adı: İzin isteyen uygulamanın adı. Ad, uygulamanızı doğru bir şekilde yansıtmalı ve kullanıcıların başka yerlerde gördüğü uygulama adıyla tutarlı olmalıdır. Uygulama adı, Hesap Bağlama izni ekranında gösterilecektir.

    Uygulama logosu: İzin ekranında, kullanıcıların uygulamanızı tanımasına yardımcı olacak bir resim. Logo, Hesap bağlama izni ekranında ve hesap ayarlarında gösterilir

    Destek e-postası: Kullanıcıların, izinleriyle ilgili soruları için sizinle iletişime geçmesi için.

    Google API'leri için kapsamlar: Kapsamlar, uygulamanızın, kullanıcınızın özel Google verilerine erişmesine izin verir. Google Hesabı Bağlantısı kullanım alanı için varsayılan kapsam (e-posta, profil, openid) yeterlidir, herhangi bir hassas kapsam eklemenize gerek yoktur. Kapsamları önceden değil, erişim gerektiğinde aşamalı olarak istemek genellikle en iyi uygulamadır. Daha fazlasını öğrenin .

    Yetkili alanlar: Sizi ve kullanıcılarınızı korumak için Google yalnızca OAuth kullanarak kimlik doğrulaması yapan uygulamaların Yetkili Alan Adlarını kullanmasına izin verir. Uygulamalarınızın bağlantıları Yetkili Etki Alanlarında barındırılmalıdır. Daha fazlasını öğrenin .

    Uygulama Ana Sayfası bağlantısı: Uygulamanız için ana sayfa. Yetkili Etki Alanında barındırılmalıdır.

    Uygulama Gizlilik Politikası bağlantısı: Google Acount Bağlama izni ekranında gösterilir. Yetkili Etki Alanında barındırılmalıdır.

    Uygulama Hizmet Şartları bağlantısı (İsteğe bağlı): Yetkili Bir Alan Adı üzerinde barındırılmalıdır.

    Şekil 1 . Hayali bir Uygulama için Google Hesabı Bağlama İzni Ekranı, Tunery

  4. "Doğrulama Durumu" nu kontrol edin, başvurunuzun doğrulanması gerekiyorsa, başvurunuzu doğrulama için göndermek için "Doğrulama İçin Gönder" düğmesini tıklayın. Ayrıntılar için OAuth doğrulama gereksinimlerine bakın.

OAuth sunucunuzu uygulayın

OAuth 2.0 örtülü akışını desteklemek için hizmetiniz, HTTPS tarafından bir yetkilendirme uç noktası sağlar. Bu uç nokta, veri erişimi için kullanıcılardan kimlik doğrulaması ve onay almaktan sorumludur. Yetkilendirme uç noktası, halihazırda oturum açmamış kullanıcılarınız için bir oturum açma kullanıcı arayüzü sunar ve istenen erişime izin verir.

Bir Google uygulamasının hizmetinizin yetkili API'lerinden birini çağırması gerektiğinde, Google bu uç noktayı, kullanıcılarınızdan kendi adına bu API'leri çağırma izni almak için kullanır.

Google tarafından başlatılan tipik bir OAuth 2.0 örtük akış oturumu aşağıdaki akışa sahiptir:

  1. Google, yetkilendirme uç noktanızı kullanıcının tarayıcısında açar. Kullanıcı, henüz oturum açmamışsa oturum açar ve önceden izin vermemişse, API'nizle Google'a verilerine erişme izni verir.
  2. Hizmetiniz bir erişim jetonu oluşturur ve bunu Google'a iade eder. Bunu yapmak için, isteğe bağlı erişim belirteci ile kullanıcının tarayıcısını Google'a yeniden yönlendirin.
  3. Google, hizmetinizin API'lerini çağırır ve her istekte 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.

Yetkilendirme isteklerini işleme

Bir Google uygulamasının bir OAuth 2.0 örtük akışı aracılığıyla hesap bağlama gerçekleştirmesi gerektiğinde, Google, kullanıcıyı aşağıdaki parametreleri içeren bir istekle yetkilendirme uç noktanıza gönderir:

Yetkilendirme uç noktası parametreleri
client_id Google'a atadığınız müşteri kimliği.
redirect_uri Bu isteğe yanıtı gönderdiğiniz URL.
state Yönlendirme URI'sinde değiştirilmeden Google'a geri aktarılan bir defter tutma değeri.
response_type Yanıtta döndürülecek değer türü. OAuth 2.0 örtük akışı için yanıt türü her zaman token .
user_locale İçeriğinizi kullanıcının tercih ettiği dilde yerelleştirmek için kullanılan RFC5646 biçimindeki Google Hesabı dil ayarı.

Örneğin, yetkilendirme uç noktanız https://myservice.example.com/auth mevcutsa, istek 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&response_type=token&user_locale=LOCALE

Yetkilendirme uç noktanızın oturum açma isteklerini işleyebilmesi için aşağıdaki adımları uygulayın:

  1. İstenmeyen veya yanlış yapılandırılmış istemci uygulamalarına erişim verilmesini önlemek için client_id ve redirect_uri değerlerini doğrulayın:

    • client_id Google'a atadığınız müşteri kimliğiyle eşleştiğini onaylayın.
    • redirect_uri parametresi tarafından belirtilen URL'nin şu biçime sahip olduğunu doğrulayın:
      https://oauth-redirect.googleusercontent.com/r/YOUR_PROJECT_ID
      https://oauth-redirect-sandbox.googleusercontent.com/r/YOUR_PROJECT_ID
      
  2. 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 işlemlerini tamamlayın.

  3. Google'ın API'nize erişmek için kullanması için bir erişim jetonu oluşturun. Erişim belirteci herhangi bir dize değeri olabilir, ancak simgenin bulunduğu kullanıcıyı ve istemciyi benzersiz bir şekilde temsil etmeli ve tahmin edilebilir olmamalıdır.

  4. Kullanıcının tarayıcısını redirect_uri parametresiyle belirtilen URL'ye yeniden yönlendiren bir HTTP yanıtı gönderin. Aşağıdaki parametrelerin tümünü URL parçasına dahil edin:

    • access_token : Az önce oluşturduğunuz erişim jetonu
    • token_type : Dize bearer
    • state : Orijinal istekten değiştirilmemiş durum değeri

    Aşağıda, sonuçta ortaya çıkan URL'ye bir örnek verilmiştir:

    https://oauth-redirect.googleusercontent.com/r/YOUR_PROJECT_ID#access_token=ACCESS_TOKEN&token_type=bearer&state=STATE_STRING

Google'ın OAuth 2.0 yönlendirme işleyicisi, erişim jetonunu alır ve state değerinin değişmediğini doğrular. Google, hizmetiniz için bir erişim jetonu aldıktan sonra, jetonu hizmet API'lerinize yapılan sonraki çağrılara ekler.

Uygulamanızı doğrulama

OAuth 2.0 Playground aracını kullanarak uygulamanızı doğrulayabilirsiniz.

Araçta aşağıdaki adımları uygulayın:

  1. OAuth 2.0 Yapılandırması penceresini açmak için Yapılandırma tıklayın.
  2. OAuth akışı alanında İstemci tarafı'nı seçin.
  3. OAuth Uç Noktaları alanında Özel'i seçin.
  4. OAuth 2.0 uç noktanızı ve ilgili alanlarda Google'a atadığınız istemci kimliğini belirtin.
  5. 1. Adım bölümünde herhangi bir Google kapsamı seçmeyin. Bunun yerine, bu alanı boş bırakın veya sunucunuz için geçerli bir kapsam (veya OAuth kapsamlarını kullanmıyorsanız rastgele bir dize) yazın. İşiniz bittiğinde, API'leri Yetkilendir'i tıklayın.
  6. 2. Adım ve 3. Adım bölümlerinde, OAuth 2.0 akışını inceleyin ve her adımın amaçlandığı gibi çalıştığını doğrulayın.

Google Hesap Bağlama Demo aracını kullanarak uygulamanızı doğrulayabilirsiniz.

Araçta aşağıdaki adımları uygulayın:

  1. Google ile Oturum Aç düğmesini tıklayın.
  2. Bağlamak istediğiniz hesabı seçin.
  3. Servis kimliğini girin.
  4. İsteğe bağlı olarak erişim talep edeceğiniz bir veya daha fazla kapsam girin.
  5. Demoyu Başlat'ı tıklayın.
  6. İstendiğinde, bağlantı isteğine onay verebileceğinizi ve reddedebileceğinizi onaylayın.
  7. Platformunuza yönlendirildiğinizi onaylayın.