Lock.Android:パスワードレス

Lock Passwordlessは、WhatsAppの認証方法と同様に、ユーザーがログインするために入力して確認する必要があるワンタイムパスワードを記載したメールまたはSMSをユーザーに送信して認証します。この記事では、Lock.Androidライブラリを使用してコードを送信する方法について説明します。

ユーザーがパスワードレス認証を自動的に終了できるリンクをクリックして送信することで同様の結果を得ることができますが、さらにいくつかの構成手順が必要になります。

ユーザーを認証できるようにするには、アプリケーションでメール/SMS接続を有効にして、Auth0 Dashboardで構成する必要があります。

Code Passwordlessの実装

SDKの構成

app/build.gradleファイルで、Auth0ドメインおよびAuth0スキームプロパティにマニフェストファイルを追加すると、それがライブラリによって内部で使用され、認証結果を取り込むインテントフィルタを登録します。

plugins {
    id "com.android.application"
    id "kotlin-android"
}

android {
    compileSdkVersion 30
    defaultConfig {
        applicationId "com.auth0.samples"
        minSdkVersion 21
        targetSdkVersion 30
        // ...

        // ---> Add the next line
        manifestPlaceholders = [auth0Domain: "@string/com_auth0_domain", auth0Scheme: "https"]
        // <---
    }
}

Was this helpful?

/

これらの値を、後でコードから参照可能な文字列リソースとしてstrings.xmlファイルに追加することをお勧めします。

<resources>
    <string name="com_auth0_client_id">{yourClientId}</string>
    <string name="com_auth0_domain">{yourDomain}</string>
</resources>

Was this helpful?

/

SDKの使用方法

Lockを起動する予定のアクティビティで、アプリケーションの情報を用いてAuth0のインスタンスを作成します。最も簡単な作成方法は、AndroidのContextを渡す方法です。これは、strings.xmlファイルで以前定義した値を使用します。これを行うには、文字列リソースが上記のものと同じキーを使用して定義されなければなりません。

val account = Auth0(context)

Was this helpful?

/

ユーザー認証イベントを処理するAuthenticationCallback実装を宣言します。正常な認証シナリオで返されるCredentialsオブジェクトには、アプリケーションまたはAPIが最終的にコンシュームするトークンが含まれます。詳細については、「トークン」をご覧ください。

private val callback = object : AuthenticationCallback() {
    override fun onAuthentication(credentials: Credentials) {
        // Authenticated
    }

    override fun onError(error: AuthenticationException) {
        // Exception occurred
    }
}

Was this helpful?

/

Builderクラスを使用して構成し、新しいLockインスタンスを準備します。アカウントの詳細と上記で宣言したCallback実装を提供します。オーディエンス、スコープ、使用可能な接続などの値はここで構成できます。完了したら、Lockインスタンスをビルドします。このインスタンスは、再使用されるように意図されており、必要なくなった時に廃棄されなければなりません。これを行うのに最適な場所は、アクティビティのonDestroyメソッド内です。

以下のサンプルは、useCode()メソッドを呼び出して、Lockがユーザーのメールまたは電話番号にCODEを送信するようにします。

// This activity will show Passwordless Lock
class MyActivity : AppCompatActivity() {

    private lateinit var lock: PasswordlessLock

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        val account = Auth0(this)
        // Instantiate Lock once
        lock = PasswordlessLock.newBuilder(account, callback)
            .useCode()
            // Customize Lock
            .build(this)
    }

    override fun onDestroy() {
        super.onDestroy()
        // Important! Release Lock and its resources
        lock.onDestroy(this)
    }

    private val callback = object : AuthenticationCallback() {
        override fun onAuthentication(credentials: Credentials) {
            // Authenticated
        }

        override fun onError(error: AuthenticationException) {
            // An exception occurred
        }
    }
}

Was this helpful?

/

最後に、アクティビティ内からPasswordlessLockウィジェットを起動します。

startActivity(lock.newIntent(this))

Was this helpful?

/

どのパスワードレス接続が有効になっているかに応じて、LockはCODEをメールまたはSMSで送信します。使用可能な場合は、最初に「メール」接続が選択されます。次に、ユーザーは確認手順でCODEを入力する必要があります。値がサーバーが期待するものと等しい場合、認証は成功します。