Skip to main content
Android 向け Lock は、ネイティブ Android アプリに統合して、ユーザーのログインやアプリ内でのサインアップを洗練された形で実装できます。Facebook、Google、X などのソーシャル に加え、Active Directory などのエンタープライズ プロバイダーもサポートしています。 GitHub の Lock.Android リポジトリ をご覧ください。

要件

Auth0.Android library 経由で Lock の UI または独自の UI を使用するには、Android API レベル 21 以上と Java 8 以上が必要です。また、タイプが “Native” の Auth0 アプリケーションも必要です。 Android プラグインと Kotlin プラグインでそれぞれ Java 8 バイトコードを対象にするため、build.gradle には次の内容が必要です。
android {
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    kotlinOptions {
        jvmTarget = '1.8'
    }
}

インストール

Lock は Maven Central から利用できます。Lock を使い始めるには、次の行を build.gradle の dependencies に追加します。 implementation 'com.auth0.android:lock:3.+' 最新バージョンは、リポジトリの Readme または Maven で確認できます。 Gradle の依存関係を追加したら、Gradle ファイルとプロジェクトを同期することを忘れないでください。

Dashboard の設定

開始する前に、Auth0 Dashboard でいくつかの設定を行う必要があります。

コールバックURL

に移動し、アプリケーションの設定を開きます。次の URL をアプリケーションの Allowed Callback URLs に追加します。 https://{yourDomain}/android/{yourAppPackageName}/callback {yourAppPackageName} は、app/build.gradle ファイルの applicationId の値として確認できる、実際のアプリケーションのパッケージ名に置き換えてください。

キーストアとキーハッシュ

Android アプリケーションは、デバイスにインストールする前に署名する必要があります。そのため、Android Studio IDE は初回起動時に、開発ビルドの署名に使用するデフォルトの “Android Debug Keystore” を生成します。この Keystore は、開発者を識別するために使用されるため、本番ビルドで使用するものとは異なる可能性があります。 Web Authentication 機能 (つまり、ソーシャル接続) を使用する場合、Lock はデフォルトで Android App Links を使用するように設定されます。これには、Auth0 アプリケーションのダッシュボードで追加の設定が必要です。この手順を完了するには、Android Keystores and Key Hashes Guide を参照してください。

Lock の実装 (ソーシャル、データベース、エンタープライズ)

以下では、Android 向け Classic Lock の実装手順を説明します。Android 向けの Lock を実装する場合は、Lock.Android: Passwordlessを参照してください。

SDK の設定

app/build.gradle ファイルに、Auth0 のドメインと Auth0 のスキームのプロパティ用の Manifest Placeholders を追加します。これらは、認証結果を受け取る intent-filter を登録するために、ライブラリ内部で使用されます。
plugins {
    id "com.android.application"
    id "kotlin-android"
}

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

        // ---> 次の行を追加
        manifestPlaceholders = [auth0Domain: "@string/com_auth0_domain", auth0Scheme: "https"]
        // <---
    }
}
これらの値は、後でコードから参照できる文字列リソースとして strings.xml ファイルに追加しておくことをおすすめします。このガイドでも、その方法に従います。

SDK の使用方法

Lock を呼び出すアクティビティで、アプリケーション情報を使って Auth0 のインスタンスを作成します。最も簡単な作成方法は、Android の Context を渡すことです。これにより、strings.xml ファイルで事前に定義した値が使用されます。これを機能させるには、文字列リソースを上記の一覧と同じキーで定義する必要があります。
val account = Auth0(context)
ユーザー認証イベントを処理する AuthenticationCallback の実装を定義します。認証が成功した場合に返される Credentials オブジェクトには、最終的にアプリケーションまたは API が使用するトークンが含まれます。詳細については、Tokens を参照してください。
private val callback = object : AuthenticationCallback() {
    override fun onAuthentication(credentials: Credentials) {
        // 認証済み
    }

    override fun onError(error: AuthenticationException) {
        // 例外が発生しました
    }
}
Builder クラスを使用して設定し、新しい Lock インスタンスを準備します。アカウントの詳細と、前述のコールバック実装を指定します。、スコープ、利用可能な接続などの値はここで設定できます。 設定が完了したら、Lock インスタンスをビルドします。このインスタンスは再利用することを前提としているため、不要になったら破棄する必要があります。これを行う適切な場所は、アクティビティの onDestroy メソッドです。
// このアクティビティはLockを表示します
class MyActivity : AppCompatActivity() {

    private lateinit var lock: Lock

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

        val account = Auth0(this)
        // Lockを一度だけインスタンス化する
        lock = Lock.newBuilder(account, callback)
            // Lockをカスタマイズする
            .build(this)
    }

    override fun onDestroy() {
        super.onDestroy()
        // 重要!Lockとそのリソースを解放する
        lock.onDestroy(this)
    }

    private val callback = object : AuthenticationCallback() {
        override fun onAuthentication(credentials: Credentials) {
            // 認証済み
        }

        override fun onError(error: AuthenticationException) {
            // 例外が発生しました
        }
    }
}
最後に、アクティビティ内から Lock ウィジェットを起動します。
startActivity(lock.newIntent(this))
これで完了です。あとは Lock が処理します。 この記事および Lock でデフォルトで使用されるコールバック URI スキームは https です。Android App Links を使用している場合、Android Marshmallow (API 23) 以降ではこれが最適ですが、それ以前の Android バージョンでは、インテントの処理先としてアプリケーションとブラウザーのどちらを使用するかをユーザーに選択させるインテント選択ダイアログが表示されることがあります。これは「曖昧性解消ダイアログ」と呼ばれます。この動作は、一意のカスタムスキームを使用することで変更できます。そうすると、OS はリンクを直接アプリで開きます。
  1. app/build.gradle ファイルの auth0Scheme Manifest Placeholder 値、または AndroidManifest.xml ファイル内の Intent Filter 定義を直接更新し、既存のスキームを新しいものに変更します。
  2. Auth0 Dashboard のアプリケーション設定で Allowed Callback URLs を更新し、新しいスキームで始まる URL に一致するようにします。
  3. ビルダーで Lock を設定する際に withScheme() を呼び出し、使用するスキームを渡します。
スキームの値は、すべて小文字である必要があります。そうでない場合は警告メッセージがログに記録され、認証は完了しません。

Lock の設定

Lock の設定オプションの一覧については、Lock.Android: Configurationを参照してください。

エラーメッセージ

一般的なエラーメッセージの説明については、Error Messages ページを参照してください。また、コールバックで AuthenticationException を受け取った場合は、各エラーケースの見分け方を source で確認できます。

詳しくはこちら