HMS Account Kit Entegrasyonu

Uğur ÇALIK
Huawei Developers - Türkiye
7 min readSep 15, 2020

Bildiğiniz gibi telefon uygulamaları artık sizden yeni bir account yaratmanızı veya varolan account’unuz ile giriş yapmanızı istemektedir. Çok sayıda uygulama kullanan kişiler için her indirilen uygulamaya ayrı bir account şifre veya e-mail gerekmektedir. HMS Account Kit bizi bu ağır yükten çok basit bir şekilde kurtarmaktadır. Tek tıklama ile sadece kişiye özel Huawei ID’niz ile bütün uygulamalara login olabilirsiniz hem de herhangi bir user name veya password girmeden.

Huawei Account Kit nedir? Avantajları nelerdir?

Huawei Account Kit geliştiricilere basit, hızlı, güvenli oturum açma ve yetkilendirme işlevler sağlar. Kullanıcıların mail adresleri ve şifrelerini girmesine gerek duymadan tek tıkla güvenli ve basit bir şekilde uygulamada oturum açmasına olanak verir.

Avantajları :

1)Hızlı ve Standart

Cep telefonları, tabletler ve akıllı ekranlar gibi cihazlardan Huawei ID ile Huawei Ekosistemine bağlanmanızı sağlar.

2)Büyük kullancı tabanlı ve Global servisler

Dünya çapında 190 ülke ve bölgeye hizmet verir ve 500 Milyon kullanıcı ile 70’ten fazla dili destekler.Bu kullanıcılar Huawei ID ile tek tıkla uygulamada oturum açabilir.

3)Güvenilirdir ve Uluslararası Standartlara uygundur

Oauth 2.0 ve Open ID Connect gibi uluslararası standartlar ve protokollere bağlı kalınmıştır ve yüksek güvenlikli koruma için iki faktörlü kimlik doğrulamayı (parola kimlik doğrulaması ve telefon numarası kimlik doğrulaması) destekler.

Kullanımı:

Kullanıcılar ilk erişim izni verdikten sonra Huawei ID leri ile uygulamalarda hızlı ve kolay bir şekilde oturum açabilirler.Ayrıca tüm uygulamarda oturum açmak için sadece bir Huawei ID kullanılır.

Erişim izni

HMS Account Kit Projeye Nasıl Entegre Edilir?

1) Huawei Account Kit Entegrasyonu İçin Gereksinimler

HMS Account Kit’i projeye entegre edebilmek için bazı gereksinimlere ihtiyaç var. Bunlar;

Donanım Gereksinimleri

  • Windows 10 işletim sistemini çalıştırılabilen bir bilgisayar (Masaüstü veya dizüstü).
  • Demo projeyi çalıştırmak ve debug edebilmek için HMS Core (APK) 4.0.0.300 veya üzerini desttekleyen bir Huawei cep telefonu.

Yazılım Gereksinimleri

HMS Kit’lerini projenize entegre etmek için önce projenizin AppGallery bağlantısını yaptığınıza emin olun. AppGallery Connect SDK’sını projeye nasıl dahil edeceğiniz ile ilgili bilgiye link üzerinden ulaşabilirsiniz.

2) Huawei Account Kit Entegrasyon Hazırlıkları

Huawei Account Kit’ini projenize entegre etmek için aşağıdaki işlemleri entegrasyondan önce yapmanız gerekiyor.

  • AppGallery Connect’te bir uygulama oluşturun.
  • Android Studio’da bir proje oluşturun.
  • Signing certificate oluşturun.
  • Signing certificate fingerprint oluşturun.
  • Signing certificate fingerprint’i gerekli şekilde konfigure edin.
  • Uygulamanın paket ismini kaydedin ve konfigurasyon dosyasını kaydedin.
  • AppGallery Connect plug-in’ni ve Maven Repository’i project-level’deki build.gradle’a ekleyin.
  • Android Studio’daki imza dosyasını konfigure edin.

Yukarıdaki işlemler ile ilgili ayrıntılara link’ten ulaşabilirsiniz

3) Huawei Account Kit’in Etkinleştirilmesi

  • AppGallery Connect’te oturum açın. My Projects’e gelin ve ilgili projenize tıklayın. Project Setting > Manage APIs’e tıklayın.
  • Huawei Account Kit’i etkinleştirin

Artık Huawei Account Kit’i başarılı bir şekilde uygulamanızda etkinleştirmiş oldunuz.

4) Huawei Account Kit SDK Entegrasyonu

  • Yapılandırma Dosyasını Nasıl Elde Ederiz?

AppGallery Connect’te oturum açın ve My projects’e gelin ve uygulumanıza tıklayın daha sonra Project Setting > General information ‘da Set’e tıklayın ve buradan data’ların depolanacağı bölgeyi seçin.(Örn: Germany)

Daha sonra App Information kısmındaki agconnect-services.json dosyasını tıklayarak indirin.

İndirdiğiniz dosyayı app klasörünün altına kopyalayın.

*Build Bağımlılıklarının Eklenmesi

  1. App klasörünün altında bulunan build.gradle dosyasını açın ve dependencies bölümüne aşağıdaki satırı ekleyin.(En son sdk versiyonunu görebilmek için link’e tıklayabilirsiniz)

2. Dosyada yaptığımız değişiklikten sonra sağ üst köşesinde bulunan Sync Now butonuna tıklayarak projemizi senkronize edelim

Herhangi bir hata çıkarsa, ağ bağlantılarımızı ve gradle dosyalarımızı tekrar bir gözden geçirelim.Bu adımlar bittiğinde artık Account Kit’i projemize başarılı bir şekilde eklemiş olduk. Eklediğimiz Account Kit’i artık projemize entegre edebiliriz.

5) Huawei Account Kit’in Projede kullanılması

Account Kit’i iki farklı şekilde kullanmamız mümkündür.Bunlardan birincisi ID token yöntemi ile oturum açma, ikincisi ise Yetkilendirme Kodu (Authorization Code) ile oturum açmadır.

  • ID Token ile Oturum Açma

Account Kit OpenID Connect Protokolünü destekler ve Kullanıcı Kimlik Bilgilerini ID Token vasıtasıyla döndürür.ID Token base64 kodlu bir imza dizisidir.

ID Token Süreci

  • Kullanıcı, Huawei ID ile giriş yap butonuna tıklar ve Huawei ID’si ile oturum açmak için istekte bulunur.
  • HMS Account SDK oturum açma isteğinde bulunan kullanıcıya, verilecek yetki ile alakalı bilgilendirmeyi açıkça belirtmek için oturum açma yektilendirme arayüzünü gösterir.
  • Kullanıcı belirtilen yetkilendirmeye onay verdikten sonra Account SDK ID Token bilgisini uygulamaya geri döndürür.
  • Uygulama local olarak veya Huawei Account Kit Server’ı kullanarak Token ID bilgisini doğrular.

ID Token Yönteminin Uygulanması

  1. Kullancının tek bir buton üzerinden Huawei ID ile login olabilmesi için , uygulama ekranına login butonu eklenmelidir.Bu buton Huawei’nin belirlediği icon’lar içerisinden seçilmelidir.
  2. HuaweiIDAuthParamsHelper class’ından setIdToken methodu çağırılır.

3. HuaweiIdAuthService objesini initialize etmek için HuaweiIdAuthManager’ ın getService methodu çağrılır.

4. HuaweiIdAuthService class’ında bulunan getSignIntent method’u çağrılır ve kullanıcıya Huawei ID ilr oturum açma ve yetkilendirme ekranı gösterilir.

5. Oturum açma ve yetkilendirme işlemi başarılı bir şekilde sonuçlandığında, kullanıcı bilgilerine onActivityResult’un içerisinden rahatlıkla ulaşabiliriz.

  • Yetkilendirme Kod (Authorization Code) Yöntemi ile Oturum Açma

Huawei Account Kit ayrıca Huawei ID ile Authorization Code üzerinden de oturum açmaya olanak sağlar.Fakat bu yöntem sadece geliştiricilerin kendilerine ait server’ı varsa tercih edilmelidir.

Authorization Code Süreci

  • Kullanıcı Huawei ID ile Giriş Yap butonuna tıklayarak, Huawei ID ile oturum açma isteğinde bulunur.
  • HMS Account SDK oturum açma isteğinde bulunan kullanıcıya, verilecek yetki ile alakalı bilgilendirmeyi açıkça belirtmek için oturum açma yektilendirme arayüzünü gösterir.
  • Kullanıcı, uygulamanızı istenen içeriğe erişmesi için yetkilendirdikten sonra, Account SDK’sı Authorization Code bilgisini uygulamanıza döndürür.
  • Authorization Code’a bağlı olarak uygulamanız Access Token, Refresh Token ve ID Token bilgilerini Account Kit Server’dan alır.
  • Eğer Access Token ya da ID Token süresi dolduysa uygulama server’ınız Refresh Token kullanarak yeni bir Access Token ya da ID Token alır.

Authorization Code Yönteminin Uygulanması

  1. Kullancının tek bir buton üzerinden Huawei ID ile login olabilmesi için , uygulama ekranına login butonu eklenmelidir.Bu buton Huawei’nin belirlediği icon’lar içerisinden seçilmelidir.
  2. Yetkilendirme isteğini atabilmek için HuaweiIdAuthParamsHelper class’ından setAuthorizationCode methodu çağrılır.

3. HuaweiIdAuthService objesini initialize edebilmek için HuaweiIdAuthManager class’ında getService methodu çağırılır.

4. HuaweiIdAuthService class’ından getSignInIntent methodu çağıralarak kullanıcıya Huawei ID ile oturum açabilmek için gerekli olan yetkilendirme ekranı gösterilmiş olur.

5. Oturum açma ve yetkilendirme işlemi başarılı bir şekilde sonuçlandığında, kullanıcı bilgilerine onActivityResult’un içerisinden rahatlıkla ulaşabiliriz.

6. Uygulama elde edilen Authorization Code’ u sunucusuna bildirir ve bu kod ile geliştiricinin sunucusunda /oauth/v3/token API’ ya istek atılarak Huawei ID sunucusundan ID Token, Access Token ve Refresh Token bilgileri elde edilir.

Atılan İstek Örneği:

POST /oauth2/v3/token HTTP/1.1Host: oauth-login.cloud.huawei.comContent-Type: application/x-www-form-urlencodedgrant_type=authorization_code&code=ANXxSNjwQDugOnqeikRMu2bKaXCdlLxn&client_id=12345&code_verifier=123444444dfd4sadfsdwew321454567587658776t896fdfgdscvvbfxdgfdgfdsfasdfsdgd233&redirect_uri=hms%3A%2F%2Fredirect_uri&need_open_uid=true

İstekten Sonra Gelen Cevap Örneği:

HTTP/1.1 200 OKContent-Type: application/json;charset=UTF-8Cache-Control: no-storePragma: no-cache{
"access_token": "CFyJ21sNODl16eV9y2vu3CwQk9DBr32BkOcxxgAd7MZUR5th1giyTk5\/kA+QDAyxou+\/5U2zzBRcf3qgLkkFdtbbC+mM3zFV7xj7CCEMHc5Tw92al0Y=",
"refresh_token": "CF13G0sRaGybtYt7SIyeUILNORtTFwMgz4ao5C7j7vtgLPt6ogmXKjdI8RS\/YlyS71z4DyP6kEMnOrRlmNK0KhdOUNWd+qVLLRsEEHkqRIKpuAkPvL8=","expires_in": 3600,"id_token": "eyJhbGciOiJSUzI1NiIsImtpZCI6IjExOGRmMjU0YjgzNzE4OWQxYmMyYmU5NjUwYTgyMTEyYzAwZGY1YTQiLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2FjY291bnRzLmdvb2dsZS5jb20iLCJhenAiOiI3ODI0NTY2Njc4OTgtc2M0MzE3Y2l0NGEwMjB0NzdrbGdsbWo1ZjA4YWtnMWIuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20iLCJhdWQiOiI3ODI0NTY2Njc4OTgtN2NkNGJpYWRkaGVwNGc4cnZic2VlOGtwcDA5Zm1hNzIuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20iLCJzdWIiOiIxMDE3MTIxMzkwMzgwNDE2MDc0MTQiLCJlbWFpbCI6Inh1ZXpoZW5odWF0anVAc2luYS5jb20iLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwicGljdHVyZSI6Imh0dHBzOi8vbGg1Lmdvb2dsZXVzZXJjb250ZW50LmNvbS8tMm9lTTllT09zNTAvQUFBQUFBQUFBQUkvQUFBQUFBQUFBQkkvMVpOSC0xdmxxc3cvczk2LWMvcGhvdG8uanBnIiwiaWF0IjoxNTYxNDUxMTUyLCJleHAiOjE1NjE0NTQ3NTJ9.Eo9IHMkid596jvt1YYzNsRtDq9c9K9dbougkU41Noh7TXNiko86_RuWwHID6k1kDg398AwC3wwH-t2hLcUjgrXPNd9XYU96Jp4-UxdDszP6ywEJgvvBCyTHzsi2auvKt_MnfSrs3qOKfh7noJvXq8AY-Hi3vqSUks5kGqbZKVzCHhBDO3RD9Fs9YHsB6w0XVKZojPOBDaAT_TiijoChn-Q-e8NbSGUx52OgeH-Nw5lOj6JVb_7fb6ucWRzlhiQuzFjklevLVw2pjw1MxKbl1vfRp0X699uZBVjgl9hj1L7LSDObuPzLiXF7ojji5JKYC6zIwAtZQUZ_VUmSk01GDLQ","scope": "openid profile email","token_type": "Bearer","open_id": "MDFAMzAwMDUxODgzQDNiaODc3NTkzNGRlNmNiaMzBlNmQ2YjAzNTgzNTJhMDNjQDkwMGQwYTY1NmE1NmNlNTU1M2EzMWY3Y2VmZWQwOGJlYTRkZTU4ZjM5YWFmOWNhNTk0ODEyZA",}

İstek sonucu gelen cevap ile elde edilen Access Token’ın kısa bir kullanım süresi vardır.(60 Dakika) Access Token’ın kullanım süresi dolduğunda ya da dolmak üzereyken yeni Access Token elde edebilmek için Huawei Account Kit sunucusunun /oauth2/v3/token API’sine Refresh Token ile birlikte istek atılabilir.

Refresh Token İstek Örneği:

POST /oauth2/v3/token HTTP/1.1Host: oauth-login.cloud.huawei.comContent-Type: application/x-www-form-urlencodedgrant_type=refresh_token&client_id=12345&client_secret=bKaZ0VE3EYrXaXCdCe3d2k9few&refresh_toekn=CF2Mm03n0aos9iZZ8nIhfyDtoXy74CXeBi50gVVhMpB0IUzlv9ZwizEvTBhVoF820ZPim0JwNR9j2p1qgEQWnIVYZRlp4T6ezMgekUnsHBkvNev5rd2MdfQMLP

Refresh Token İsteği Sonrası Cevap Örneği:

HTTP/1.1 200 OKContent-Type: application/json;charset=UTF-8Cache-Control: no-storePragma: no-cache
{
"access_token": "CFyJ4J\/l6wuwcFqYOJG4maq2ca8RAV+g0i+mel6qCV5lvqH0PYtW0+BNwfHWg0AqMnW6ZdBvUgs7ijkxMFh1xVP\/B+vQXz3PWsivkKCuL78XtbLt7vs=","id_token": "eyJhbGciOiJSUzI1NiIsImtpZCI6IjExOGRmMjU0YjgzNzE4OWQxYmMyYmU5NjUwYTgyMTEyYzAwZGY1YTQiLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2FjY291bnRzLmdvb2dsZS5jb20iLCJhenAiOiI3ODI0NTY2Njc4OTgtc2M0MzE3Y2l0NGEwMjB0NzdrbGdsbWo1ZjA4YWtnMWIuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20iLCJhdWQiOiI3ODI0NTY2Njc4OTgtN2NkNGJpYWRkaGVwNGc4cnZic2VlOGtwcDA5Zm1hNzIuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20iLCJzdWIiOiIxMDE3MTIxMzkwMzgwNDE2MDc0MTQiLCJlbWFpbCI6Inh1ZXpoZW5odWF0anVAc2luYS5jb20iLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwicGljdHVyZSI6Imh0dHBzOi8vbGg1Lmdvb2dsZXVzZXJjb250ZW50LmNvbS8tMm9lTTllT09zNTAvQUFBQUFBQUFBQUkvQUFBQUFBQUFBQkkvMVpOSC0xdmxxc3cvczk2LWMvcGhvdG8uanBnIiwiaWF0IjoxNTYxNDUxMTUyLCJleHAiOjE1NjE0NTQ3NTJ9.Eo9IHMkid596jvt1YYzNsRtDq9c9K9dbougkU41Noh7TXNiko86_RuWwHID6k1kDg398AwC3wwH-t2hLcUjgrXPNd9XYU96Jp4-UxdDszP6ywEJgvvBCyTHzsi2auvKt_MnfSrs3qOKfh7noJvXq8AY-Hi3vqSUks5kGqbZKVzCHhBDO3RD9Fs9YHsB6w0XVKZojPOBDaAT_TiijoChn-Q-e8NbSGUx52OgeH-Nw5lOj6JVb_7fb6ucWRzlhiQuzFjklevLVw2pjw1MxKbl1vfRp0X699uZBVjgl9hj1L7LSDObuPzLiXF7ojji5JKYC6zIwAtZQUZ_VUmSk01GDLQ","expires_in": 3600,"scope": "openid profile email","token_type": "Bearer"}

Account Kit’i kullanarak iki farklı yöntem ile başarılı bir şekilde kullanıcılarımıza oturum açtırdık. Bundan sonraki adımda Kullacının açılan oturumunu kapatabilmesi için gerekli yöntemleri ele alalım.

Huawei ID ile Açılan Oturumun Kapanma Süreci

  1. Kullanıcı başaralı bir şekilde oturum açtığı uygulamada oturumu kapatma butonuna tıklar.
  2. Uygulama HuaweiIdAuthService.signOut methodunu çağırarak Account SDK’ inden oturumu kapatmasını ister.
  3. Account SDK Huawei ID ile oturum açma bilgilerini siler ve oturum kapatma cevabını uygulamaya gönderir.

Huawei ID ile Oturum Kapatmanın Uygulanması

  1. Huawei ID ile oturum açmak için kullanılan HuaweiAuthService instance’sının signOut methodu çağrılır.

2. Oturum kapatma işlemi başarılı bir şekilde gerçekleştiğinde onComplete methodu içerisindeki kod bloğu çalıştırılmış olur.

Huawei Account Kit’in nasıl entegre edilip kullanılacağı ile ilgili bütün bilgileri aktarmaya çalıştım. Umarım faydalı olmuştur.

Teşekkürler.

Referanslar

--

--