Skip to main content
では、ユーザーアカウントのリンク を利用できます。これにより、異なるプロバイダーに属する別々のユーザーアカウントをリンクまたはリンク解除し、1 つのプロフィールに関連付けることができます。また、ユーザーメタデータやその他のプロフィール情報を更新することもできます。 ユーザーアカウントをリンクすると、ユーザーはどのアカウントでも認証でき、どのアカウントでログインしても同じプロフィールを表示できます。Auth0 では、これらのアカウントはデフォルトですべて別々のプロフィールとして扱われるため、ユーザーのアカウントをリンクする場合はこの方法を使用します。 link メソッドは 2 つのパラメーターを受け取ります。1 つはプライマリプロフィールのユーザー ID、もう 1 つはセカンダリプロフィールの です (この ID でログインした後に取得されるトークン) 。ここでいうユーザー ID は、このユーザーアカウントの一意の識別子です。ID が facebook|1234567890 の形式の場合、必要な ID は区切りのパイプ以降の部分です (この場合は 1234567890) 。
Auth0
   .users(token: "user-scoped access token")
   .link(userId, withOtherUserToken: "another user token")
   .start { result in
      switch result {
      case .success(let userInfo):
        print("User: \(userInfo)")
      case .failure(let error):
        print(error)
      }
   }
ユーザーのリンク解除は、ユーザーのリンクとほぼ同じ手順です。unlink メソッドは 3 つのパラメーターを受け取ります。セカンダリプロフィールのユーザー ID、セカンダリプロフィールのプロバイダー (接続の ) 、およびプライマリプロフィールのユーザー ID です。 パラメーターの意味を要するに言えば、「この セカンダリユーザー (この プロバイダー を持つ) とこの プライマリユーザー のリンクを解除する」ということです。
Auth0
   .users(token: "user-scoped access token")
   .unlink(identityId: identifier, provider: provider, fromUserId:userId)
   .start { result in
      switch result {
      case .success(let userInfo):
        print("User: \(userInfo)")
      case .failure(let error):
        print(error)
      }
   }
アカウントをリンクしても、セカンダリアカウントのプロフィールのメタデータがプライマリアカウントのプロフィールのメタデータにマージされることはありません。同様に、アカウントのリンクを解除しても、セカンダリアカウントのプロフィールにプライマリアカウントのプロフィールのメタデータが保持されることはありません。

ユーザーメタデータの取得

Auth0
    .users(token: "user-scoped access token")
    .get(userId, fields: ["user_metadata"], include: true)
    .start { result in
        switch result {
        case .success(let userInfo):
            print("User: \(userInfo)")
        case .failure(let error):
            print(error)
        }
    }

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

ユーザーメタデータを更新するには、まず userMetadata オブジェクトを作成し、次にユーザー ID と userMetadata オブジェクトを渡して patch メソッドを呼び出します。このオブジェクト内の値は、同じキーを持つ既存の値を上書きし、ユーザーメタデータにまだ存在しないキーについては新しい値として追加されます。
Auth0
    .users(token: "user-scoped access token")
    .patch("user identifier", userMetadata: ["first_name": "John", "last_name": "Doe"])
    .start { result in
        switch result {
        case .success(let userInfo):
          print("User: \(userInfo)")
        case .failure(let error):
          print(error)
        }
    }