Skip to main content
には、アプリケーションのユーザーを管理するための機能が用意されており、次のようなタスクを実行できます。

UsersAPIClient を初期化する

まず、account とプライマリ ID のトークンを渡して、新しい UsersAPIClient インスタンスを作成します。ユーザーをリンクする場合、このプライマリ ID は、データを”保持”する対象のユーザープロファイルであり、そこに他の アイデンティティ をリンクします。 ユーザーアカウントをリンクすると、ユーザーはどのアカウントからでも認証できるようになります。どのアカウントで認証しても、同じプロフィールでログインされます。アカウントをリンクしない場合、Auth0 はそれぞれの異なるアカウントを別個のプロフィールとして扱います。 link メソッドは 2 つのパラメーターを受け取ります。プライマリユーザー id とセカンダリユーザーのトークン (この ID でログインした後に取得されるトークン) です。ここでのユーザー 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>) {
            // アイデンティティが更新されました!アカウントがリンクされました。
        }

        override fun onFailure(error: ManagementException) {
            // エラー!
        }
    })
ユーザーのリンクを解除すると、アカウントはそれぞれ別々のプロフィールに戻ります。unlink メソッドは 3 つのパラメーターを受け取ります。1 つ目はプライマリ ユーザー id、2 つ目はセカンダリ ユーザー id、3 つ目はセカンダリ プロバイダー (セカンダリ ユーザーのもの) です。
users
    .unlink("primary user id", "secondary user id", "secondary provider")
    .start(object: Callback<List<UserIdentity>, ManagementException>() {
        override fun onSuccess(payload: List<UserIdentity>) {
            // 更新されたアイデンティティを取得しました!アカウントがリンクされました。
        }

        override fun onFailure(error: ManagementException) {
            // エラー!
        }
    })
アカウントをリンクしても、セカンダリアカウントのメタデータがプライマリアカウントのメタデータに統合されることはありません。同様に、2 つのアカウントのリンクを解除しても、セカンダリアカウントにプライマリアカウントのメタデータが保持されることはありません。

ユーザーメタデータの更新

ユーザーメタデータを更新するには、metadata オブジェクトを作成し、ユーザー id とその metadata オブジェクトを渡して updateMetadata メソッドを呼び出します。このオブジェクト内の値は、同じキーを持つ既存の値を上書きし、ユーザーメタデータにまだ存在しないキーについては新しい値を追加します。
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) {
            // メタデータが更新されました
        }

        override fun onFailure(error: ManagementException) {
            // エラー!
        }
    })