Lock.Android:使用を開始する

Lock for Androidは、ネイティブAndroidアプリに組み込むことができ、ユーザーがアプリに便利な方法でログインしてサインアップできるようにします。Facebook、Google、またはXのようなソーシャルIDプロバイダーや、Active Directoryなどのエンタープライズプロバイダーをサポートします。

GitHubのLock.Androidレポジトリをご確認ください。

要件

Auth0.Androidライブラリを介してLockのUIまたはご自身のUIを使用するために最低限必要なAndroid APIレベルは21以上でJavaバージョン8以上です。また、「ネイティブ」タイプのAuth0アプリケーションも必要です。

以下に、Java 8バイトコードをAndroidとKotlinプラグインのそれぞれのターゲットにするために何がbuild.gradleに必要なのかを示します。

android {
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    kotlinOptions {
        jvmTarget = '1.8'
    }
}

Was this helpful?

/

インストール

LockはMaven Centralで利用可能です。Lockを開始するには、以下の行をbuild.gradle依存関係ファイルに追加します:

implementation 'com.auth0.android:lock:3.+'

最新バージョンはリポジトリのReadmeまたはMavenで確認できます。

Gradleの依存関係を追加したら、プロジェクトをGradleファイルと忘れずに同期させます。

Dashboardの設定

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

Callback URL

Auth0 Dashboardにアクセスして、アプリケーションの設定に移動します。以下のURLをアプリケーションの[Allowed Callback URLs(許可されているCallback URL)]に追加します。

https://{yourDomain}/android/{yourAppPackageName}/callback

{yourAppPackageName}を、app/build.gradleファイルでapplicationId値として利用可能な実際のアプリケーションのパッケージ名に置き換えます。

キーストアおよびキーハッシュ

Androidアプリケーションは、デバイスにインストールする前に、署名される必要があります。このため、Android Studio IDEは初めての実行時にデフォルトの「Androidデバッグキーストア」を生成し、それを使用して開発ビルドに署名します。このキーストアは、あなたを開発者として識別するために使用されるため、プロダクションビルドのものとはおそらく異なります。

Web Authentication機能(つまり、ソーシャル接続)を使用するとき、Lockは、Androidアプリリンクの使用を試行するようにデフォルトでセットアップされます。これは、Auth0アプリケーションのDashboardでの追加設定を必要とします。Androidのキーストアおよびキーハッシュのガイドを使用して、このステップを完了してください。

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

以下では、AndroidへのClassic Lockの実装について説明しています。AndroidにパスワードレスのLockを実装する情報をお探しの場合には、「Lock.Android:パスワードレス」を参照してください。

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メソッド内です。

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

    private lateinit var lock: Lock

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

        val account = Auth0(this)
        // Instantiate Lock once
        lock = Lock.newBuilder(account, callback)
            // 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?

/

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

startActivity(lock.newIntent(this))

Was this helpful?

/

これで作業完了です。後はLockが処理します。

Androidアプリリンク - カスタムスキーム

この記事で使用されており、LockのデフォルトであるCallback URLスキームはhttpsです。これは、Androidアプリリンクを使用している場合は、Android Marshmallow(API 23)以降で最適に機能しますが、それより前のAndroidバージョンについては、ユーザーにインテント選択ダイアログを表示して、そのインテントを解決するためにアプリケーションかブラウザを選択させる場合があります。これは「曖昧さ回避ダイアログ」と呼ばれます。カスタムの固有スキームを使用して、OSがアプリで直接リンクを開くようにすることで、この動作を変更できます。

  1. 既存のスキームを新規のものに変更して、app/build.gradleファイル、または直接AndroidManifest.xmlファイルのインテントフィルタ定義のauth0Schemeマニフェストファイルの値を更新します。

  2. Auth0 Dashboardのアプリケーションの設定の[Allowed Callback URLs(許可されているCallback URL)]を新規スキームから始まるURLに一致するように更新します。

  3. ビルダーでLockを構成するときに、使用したいスキームを渡してwithScheme()を呼び出します。

ロックの構成

Lockの構成オプションの完全リストについては、「Lock.Android:構成」を確認してください。

エラーメッセージ

一般的なエラーメッセージの説明については、エラーメッセージのページをご覧ください。また、コールバックがAuthenticationExceptionを受け取った場合は、ソースを確認してそれぞれのエラーシナリオを特定する方法を知ることができます。

もっと詳しく