Giyilebilir cihazlarda kimlik doğrulama

Wear OS uygulamaları, tamamlayıcı uygulama olmadan bağımsız olarak çalışabilir. Bunun anlamı, Wear OS uygulamasının erişim sırasında kimlik doğrulamasını kendi başına yönetmesi gerekiyor bulmasıdır. Ancak kol saatinin küçük ekran boyutu ve sınırlı giriş özellikleri, Wear OS uygulamasının kullanabileceği kimlik doğrulama seçeneklerini sınırlandırır.

Bu kılavuzda, Wear OS uygulamaları için önerilen kimlik doğrulama yöntemleri ele alınmıştır: uygulamanın kullanım alanına uygun olmayan alternatiflere de değineceğiz.

İyi bir oturum açma deneyimi tasarlama hakkında daha fazla bilgi edinmek için Oturum açma kullanıcı deneyimi kılavuzunu inceleyin.

Misafir modu

Tüm işlevler için kimlik doğrulama gerektirmez. Bunun yerine mümkün olduğunca çok ve oturum açmadan da kullanıcıya ulaştırır.

Kullanıcılar, mobil uygulamayı kullanmadan Wear uygulamanızı bulup yükleyebilir. Bu nedenle, hesapları olmayabilir ve uygulamanın sunduğu özellikleri bilmiyor olabilirler. Misafir modu işlevinin, uygulamanızın özelliklerini doğru bir şekilde gösterdiğinden emin olun.

Bazı cihazların kilidi daha uzun süre açık kalabilir

Wear OS 5 veya sonraki sürümleri çalıştıran desteklenen cihazlarda sistem, Kullanıcı cihazı bileğine takıyordur. Kullanıcı bileğini kapatırsa sonra cihazı bilekten çıkarırsa sistem, cihazın kilidinin normalde olduğundan daha uzun süre açık kalması durumunda.

Uygulamanız daha yüksek bir güvenlik düzeyi gerektiriyorsa (ör. gizli veya hassas olabilecek veriler içeriyor. Öncelikle bilek algılama özelliğinin etkin:

val wristDetectionEnabled =
        isWristDetectionAutoLockingEnabled(applicationContext)

Bu yöntemin döndürdüğü değer false ise kullanıcıya, kullanıcıya özel içerik göstermeden önce uygulamanızda bir hesapta oturum açmasını isteyin.

Önerilen kimlik doğrulama yöntemleri

Bağımsız Wear OS uygulamalarının kullanıcı kimlik doğrulama kimlik bilgilerini almasını sağlamak için aşağıdaki kimlik doğrulama yöntemlerini kullanın.

Jetonları veri katmanını kullanarak iletme

Telefon tamamlayıcı uygulaması, Wearable Veri Katmanı'nı kullanarak kimlik doğrulama verilerini Wear OS uygulamasına güvenli bir şekilde aktarabilir. Kimlik bilgilerini ileti veya veri öğesi olarak aktarın.

Bu tür kimlik doğrulama genellikle kullanıcının herhangi bir işlem yapmasını gerektirmez. Ancak, oturum açtığı konusunda kullanıcıya bilgi vermeden kimlik doğrulama gerçekleştirmek. Hesabının mobil cihazdan aktarıldığını gösteren basit ve kapatılabilir bir ekran kullanarak kullanıcıyı bilgilendirebilirsiniz.

Önemli: Wear uygulamanız en az bir diğer kimlik doğrulama yöntemi sunmalıdır çünkü bu seçenek sadece İlgili mobil uygulama yüklendiğinde Android ile eşlenmiş kol saatleri. İlgili mobil uygulamaya sahip olmayan veya Wear OS cihazı iOS cihazla eşlenmiş kullanıcılar için alternatif bir kimlik doğrulama yöntemi sağlayın.

Aşağıdaki örnekte gösterildiği gibi, mobil uygulamadan veri katmanını kullanarak jetonları iletin:

val token = "..." // Auth token to transmit to the wearable device.
val dataClient: DataClient = Wearable.getDataClient(context)
val putDataReq: PutDataRequest = PutDataMapRequest.create("/auth").run {
    dataMap.putString("token", token)
    asPutDataRequest()
}
val putDataTask: Task<DataItem> = dataClient.putDataItem(putDataReq)

Aşağıdaki örnekte gösterildiği gibi kol saati uygulamasında veri değişikliği etkinliklerini dinleyin:

val dataClient: DataClient = Wearable.getDataClient(context)
dataClient.addListener{ dataEvents ->
    dataEvents.forEach { event ->
        if (event.type == DataEvent.TYPE_CHANGED) {
            val dataItemPath = event.dataItem.uri.path ?: ""
            if (dataItemPath.startsWith("/auth")) {
                val token = DataMapItem.fromDataItem(event.dataItem).dataMap.getString("token")
                // Display interstitial screen to notify the user they are being signed in.
                // Then, store the token and use it in network requests.
            }
        }
    }
}

Giyilebilir Veri Katmanı'nı kullanma hakkında daha fazla bilgi için bkz. Wear OS'te veri gönderme ve senkronize etme.

OAuth 2.0'ı kullanma

Wear OS, aşağıdaki bölümlerde açıklanan iki OAuth 2.0 tabanlı akışı destekler:

  • RFC 7636'da tanımlandığı şekilde Kod Değişimi için Kanıt Anahtarı (PKCE) ile Yetkilendirme Kodu Verme
  • RFC 8628'de tanımlandığı şekliyle Cihaz Yetkilendirmesi

Not: Kol saati ortam moduna geçtiğinde uygulamanızın kapanmaması için kimlik doğrulaması yapan etkinlikte AmbientModeSupport.attach kullanılarak her zaman açık özelliğini etkinleştirin. Ambiyans Modu'ndaki en iyi uygulamalar hakkında daha fazla bilgi için Uygulamanızı Wear'da görünür tutma konusuna bakın.

Kod Değişimi için Kanıt Anahtarı (PKCE)

PKCE'yi etkili bir şekilde kullanmak için RemoteAuthClient kullanın.

Wear OS uygulamanızdan bir OAuth sağlayıcıya kimlik doğrulama isteği gerçekleştirmek için bir OAuthRequest. nesnesini tanımlayın. Bu nesne, jeton almak için OAuth uç noktanızın URL'sinden ve CodeChallenge. nesnesini tanımlayın. Aşağıdaki kodda, yetkilendirme isteği oluşturmaya ilişkin bir örnek gösterilmektedir:

val request = OAuthRequest.Builder(this.applicationContext)
    .setAuthProviderUrl(Uri.parse("https://...."))
    .setClientId(clientId)
    .setCodeChallenge(codeChallenge)
    .build()

Kimlik doğrulama isteğini oluşturduktan sonra sendAuthorizationRequest() yöntemini kullanarak tamamlayıcı uygulamaya gönderin:

val client = RemoteAuthClient.create(this)
client.sendAuthorizationRequest(request,
    { command -> command?.run() },
    object : RemoteAuthClient.Callback() {
        override fun onAuthorizationResponse(
            request: OAuthRequest,
            response: OAuthResponse
        ) {
            // Extract the token from the response, store it and use it in network requests.
        }

        override fun onAuthorizationError(errorCode: Int) {
            // Handle error
        }
    }
)

Bu istek, tamamlayıcı uygulamaya bir çağrı gönderir. Tamamlayıcı uygulama da kullanıcının cep telefonundaki bir web tarayıcısında yetkilendirme kullanıcı arayüzünü gösterir. OAuth 2.0 sağlayıcısı, kullanıcının kimliğini doğrular ve istenen izinler için kullanıcının iznini alır. Yanıt, otomatik olarak oluşturulan yönlendirme URL'sine gönderilir.

Yetkilendirme başarılı veya başarısız olduktan sonra OAuth 2.0 sunucusu, istekte belirtilen URL'ye yönlendirir. Kullanıcı erişim isteğini onaylarsa yanıt bir yetkilendirme kodu. Kullanıcı isteği onaylamazsa yanıt bir hata içerir mesajını alırsınız.

Yanıt, sorgu dizesi biçimindedir ve aşağıdaki örneklerden birine benzer:

  https://wear.googleapis.com/3p_auth/com.your.package.name?code=xyz
  https://wear.googleapis-cn.com/3p_auth/com.your.package.name?code=xyz

Bu işlem, kullanıcıyı tamamlayıcı uygulamaya yönlendiren bir sayfa yükler. Tamamlayıcı uygulama, yanıt URL'sini doğrular ve yanıtı onAuthorizationResponse API'yi kullanarak üçüncü taraf kol saati uygulamasına iletir.

Kol saati uygulaması, yetkilendirme kodunu bir erişim jetonuyla değiştirebilir.

Not: OAuthRequest oluşturulduktan sonra, yönlendirme URL'nizi redirectUrl.

Cihaz Yetkilendirmesi

Cihaz Yetkilendirme İzni kullanılırken kullanıcı başka bir cihazda doğrulama URI'sini açar. Sonra Yetkilendirme sunucusu, bu kullanıcıdan isteği onaylamasını veya reddetmesini ister.

Bu işlemi kolaylaştırmak için kullanıcının eşlenen mobil cihazında bir web sayfası açmak üzere aşağıdaki örnekte gösterildiği gibi RemoteActivityHelper simgesini kullanın:

// Request access from the authorization server and receive Device Authorization Response.
val verificationUri = "..." // Extracted from the Device Authorization Response.
RemoteActivityHelper.startRemoteActivity(
    this,
    Intent(Intent.ACTION_VIEW)
        .addCategory(Intent.CATEGORY_BROWSABLE)
        .setData(Uri.parse(verificationUri)),
    null
)
// Poll the authorization server to find out if the user completed the user authorization
// step on their mobile device.

iOS uygulamanız varsa jetonu yetkilendirmek için tarayıcıya güvenmek yerine uygulamanızda bu intent'i durdurmak için evrensel bağlantıları kullanın.

Diğer kimlik doğrulama yöntemleri

Wear OS, aşağıdaki bölümlerde açıklanan ek oturum açma yöntemlerini destekler.

Google ile Oturum Açma

Google ile oturum açma, kullanıcının mevcut Google Hesabı ile oturum açmasına olanak tanır. En iyi kullanıcı deneyimini sunar ve özellikle de el cihazı uygulamalarınızda zaten kullanıyorsanız desteği kolaydır.

Yukarıda açıklanan önerilen kimlik doğrulama yöntemlerinden sonra Google, Oturum açma, iOS'te de iyi çalıştığından bir sonraki tercih edilen çözümdür. Aşağıdakiler Bu bölümde, temel bir Google ile Oturum Açma entegrasyonunun nasıl tamamlanacağı açıklanmaktadır.

Ön koşullar

Google ile oturum açma özelliğini Wear OS uygulamanıza entegre etmeye başlamadan önce bir Google API Konsolu projesi yapılandırmanız ve Android Studio projenizi ayarlamanız gerekir. Daha fazla bilgi için bkz. Google ile Oturum Açma özelliğini Android uygulamanıza entegre etmeye başlayın.

Google ile oturum açma özelliğini arka uç sunucusuyla iletişim kuran bir uygulama veya siteyle kullanıyorsanız iki ek ön koşul vardır:

  • Şunun için OAuth 2.0 web uygulaması istemci kimliği oluşturun: arka uç sunucunuzu ekleyebilirsiniz. Bu istemci kimliği, uygulamanızın istemci kimliğinden farklı. Daha fazla bkz. Sunucu Tarafı Erişimini Etkinleştirme.
  • HTTPS kullanarak kullanıcının kimlik jetonunu göndererek şu anda oturum açmış olan kullanıcıyı sunucuda güvenli bir şekilde tanımlayın. Arka uç sunucusunda kullanıcı kimliğinizi nasıl doğrulayacağınızı öğrenmek için Arka uç sunucusuyla kimlik doğrulayın.

Google ile Oturum Açma özelliğini uygulamanıza entegre edin

Google ile oturum açma özelliğini Wear OS uygulamanıza entegre etmek için aşağıdaki bölümlerde ayrıntılı olarak açıklanan adımları inceleyip uygulayın:

  1. Google ile Oturum Açma'yı yapılandırın.
  2. Google ile oturum açma düğmesi ekleyin.
  3. Oturum açma düğmesi seçildiğinde oturum açma akışını başlat dokunuldu.

Google ile oturum açma özelliğini yapılandırma ve GoogleApiClient nesnesini oluşturma

Oturum açma etkinliğinizin onCreate() yönteminde, Google ile oturum açma özelliğini, uygulamanızın gerektirdiği kullanıcı verilerini isteyecek şekilde yapılandırın. Ardından, Google ile oturum açma API'sine ve belirttiğiniz seçeneklere erişimi olan bir GoogleApiClient nesnesi oluşturun. Bu adımlar aşağıdaki örnekte gösterilmiştir:

public class MyNewActivity extends AppCompatActivity {

    private static final int RC_SIGN_IN = 9001;

    private GoogleSignInClient mSignInClient;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        GoogleSignInOptions options =
                new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                        .build();

        mSignInClient = GoogleSignIn.getClient(this, options);
    }
}

Uygulamanıza Google ile Oturum Açma düğmesi ekleyin

Google ile oturum açma düğmesi eklemek için aşağıdaki adımları uygulayın:

  1. Uygulamanızın düzenine SignInButton:
  2.  <com.google.android.gms.common.SignInButton
     android:id="@+id/sign_in_button"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content" />
    
  3. Uygulamanızın onCreate() yönteminde, düğmenizin OnClickListener değerini kaydederek kullanıcının tıklandığında oturum açmasını sağlayın:
  4. Kotlin

    findViewById<View>(R.id.sign_in_button).setOnClickListener(this)
    

    Java

    findViewById(R.id.sign_in_button).setOnClickListener(this);
    

Oturum açma amacı oluşturma ve oturum açma akışını başlatma

onCLick() cihazınızdaki oturum açma düğmesine dokunma işlevini yönetme kullanarak bir oturum açma niyeti oluşturarak getSignInIntent() yöntemini kullanabilirsiniz. Ardından, startActivityForResult() yöntemiyle niyeti başlatın.

Intent intent = mSignInClient.getSignInIntent();
startActivityForResult(intent, RC_SIGN_IN);

Kullanıcıdan oturum açmak için bir Google Hesabı seçmesi istenir. Profil, e-posta ve açık kimliğin dışında kapsamlar istediyseniz kullanıcıdan bu kaynaklara da erişim izni vermesi istenir.

Son olarak, etkinliğin onActivityResult yöntemiyle oturum açma sonucunu al getSignInResultFromIntent) Oturum açma sonucunu aldıktan sonra, oturum açmanın başarılı olup olmadığını isSuccess yöntemini kullanarak kontrol edebilirsiniz. Oturum açma işlemi başarılı olursa oturum açan kullanıcıyla ilgili bilgileri (ör. kullanıcının adı) içeren bir GoogleSignInAccount nesnesi almak için getSignInAccount yöntemini çağırabilirsiniz. Bu adımlar aşağıdaki örnekte gösterilmektedir:

Kotlin

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) {
    super.onActivityResult(requestCode, resultCode, data)

    // Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(...).
    if (requestCode == RC_SIGN_IN) {
        Auth.GoogleSignInApi.getSignInResultFromIntent(data)?.apply {
            if (isSuccess) {
                // Get account information.
                fullName = signInAccount?.displayName
                mGivenName = signInAccount?.givenName
                mFamilyName = signInAccount?.familyName
                mEmail = signInAccount?.email
            }
        }
    }
}

Java

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    // Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(...).
    if (requestCode == RC_SIGN_IN) {
        GoogleSignInResult signInResult = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
        if (signInResult.isSuccess()) {
            GoogleSignInAccount acct = signInResult.getSignInAccount();

            // Get account information.
            fullName = acct.getDisplayName();
            givenName = acct.getGivenName();
            familyName = acct.getFamilyName();
            email = acct.getEmail();
        }
    }
}

Google ile oturum açma özelliğini uygulayan örnek bir uygulama görmek için GitHub'daki Horologist Google ile oturum açma örneğine bakın.

Özel kod kimlik doğrulaması

Yukarıda açıklanan kimlik doğrulama yöntemlerine alternatif olarak kullanıcının başka bir cihazdan kimlik doğrulaması yapmasını gerektirebilir. gibi bir web sitesini ziyaret edip kısa süreli sayısal bir kod elde edin. Kullanıcı daha sonra kodunu girerek kimlik doğrulaması isteyebilir ve bir yetkilendirme jetonu alır.

Bu kimlik doğrulama akışı, uygulamanızın giriş modülünü kullanır veya uygulamanızın koduna manuel olarak bir üçüncü taraf kimlik doğrulama sağlayıcı oturum açma yöntemi entegre eder. Bu kimlik doğrulama yöntemi, manuel işlem ve ek çaba gerektirebilir. daha güvenli hale getirmek için, bağımsız Wear OS uygulamalarınızda daha erken kimlik doğrulamasına ihtiyacınız varsa bu yöntemi kullanabilirsiniz.

Bu kurulum için kimlik doğrulama akışı aşağıdaki şekilde çalışır:

  1. Kullanıcı, Wear OS uygulamasında yetkilendirme gerektiren bir işlem gerçekleştirir.
  2. Wear OS uygulaması kullanıcıya bir kimlik doğrulama ekranı gösterir ve kullanıcıdan belirli bir URL'den kod girmesini ister.
  3. Kullanıcı bir mobil cihaza, tablete veya PC'ye geçer, ardından bir tarayıcı açar, Wear OS uygulamasında belirtilen URL'ye gider ve oturum açar.
  4. Kullanıcı, Wear OS uygulamasına girdiği kısa süreli bir sayısal kod alır Wear OS'te yerleşik klavyeyi kullanarak kimlik doğrulama ekranı:

  5. Bu aşamadan sonra, girilen kodu kullanarak Wear OS cihazda depolanan ve güvenliği sağlanmış bir kimlik doğrulama jetonuyla kodu değiştirin izin verilmez.

Not: Kullanıcının oluşturduğu kod Tamamen sayısal olmalıdır ve alfabetik içermemelidir karakteri ekleyin.

Bu kimlik doğrulama akışı aşağıdaki grafikte gösterilmektedir: