Auth0.Android:ユーザー管理

Management APIには、以下のタスクなど、アプリケーションのユーザー管理に使用できる機能が備わっています。

UsersAPIClientを初期化する

使い始めるには、プライマリーIDのaccountとトークンを渡して、新しいUsersAPIClientインスタンスを作成します。ユーザーのリンクでは、このプライマリーIDがデータを保持するユーザープロファイルになり、これに他のIDをリンクさせます。

val account = Auth0("{yourClientId}", "{yourDomain}")
val client = UsersAPIClient(account, "token")

Was this helpful?

/

ユーザーをリンクする

ユーザーアカウントをリンクすると、ユーザーが他のアカウントでも認証できるようになります。認証にどのアカウントを使用しても、同じプロファイルでログインします。アカウントとリンクしない場合、Auth0はすべてのアカウントをそれぞれ個別のプロファイルとして扱います。

linkメソッドは、プライマリーユーザーのIDとセカンダリーユーザーのトークン(このIDでログイン後に取得するトークン)という2つのパラメーターを受け付けます。ユーザーIDはこのユーザーアカウントの一意の識別子です。IDの形式がfacebook|1234567890の場合、必要なIDは区切り文字のパイプに後続する部分です。

client
    .link("primary user id", "secondary user token")
    .start(object: Callback<List<UserIdentity>, ManagementException>() {
        override fun onSuccess(payload: List<UserIdentity>) {
            // Got the updated identities! Accounts linked.
        }

        override fun onFailure(error: ManagementException) {
            // Error!
        }
    })

Was this helpful?

/

ユーザーをリンク解除する

ユーザーをリンク解除すると、アカウントを個別のプロファイルに戻します。unlinkメソッドは、プライマリーユーザーのID、セカンダリーユーザーのID、(セカンダリーユーザーの)セカンダリープロバイダーという3つのパラメーターを受け付けます。

users
    .unlink("primary user id", "secondary user id", "secondary provider")
    .start(object: Callback<List<UserIdentity>, ManagementException>() {
        override fun onSuccess(payload: List<UserIdentity>) {
            // Got the updated identities! Accounts linked.
        }

        override fun onFailure(error: ManagementException) {
            // Error!
        }
    })

Was this helpful?

/

アカウントのリンクでは、セカンダリーアカウントのメタデータはプライマリーアカウントのメタデータとマージされません。同様に、2つのアカウントのリンク解除では、セカンダリーアカウントはプライマリーアカウントのメタデータを保持しません。

ユーザーメタデータを更新する

メタデータの更新では、metadataオブジェクトを作成してから、updateMetadataメソッドを呼び出して、ユーザーIDとmetadataオブジェクトを渡します。このオブジェクトの値は、同じキーを持つ既存の値を上書きするか、ユーザーメタデータに値がない場合は新しい値を追加します。

val metadata = mutableMapOf<String, Any?>()
metadata.put("name", listOf("My", "Name", "Is"));
metadata.put("phoneNumber", "1234567890");

users
    .updateMetadata("user id", metadata)
    .start(object: Callback<UserProfile, ManagementException>() {
        override fun onSuccess(payload: UserProfile) {
            // Metadata updated
        }

        override fun onFailure(error: ManagementException) {
            // Error!
        }
    })

Was this helpful?

/