Docs Menu
Docs Home
/ /
Atlas Device SDK
/ /

カスタムユーザーデータ - Java SDK

項目一覧

  • ユーザーのカスタム データの読み取り
  • ユーザーのカスタム データ ドキュメントの作成
  • ユーザーのカスタム データの更新

Java アプリケーション内でカスタム ユーザー データと呼ばれるアプリケーション ユーザーに関する任意のデータを直接読み取ることができます。 たとえば、ユーザーの希望言語、誕生日、ローカル タイムゾーン を保存できます。 カスタム ユーザー データの詳細については、「 カスタム ユーザー データの有効化 」を参照してください。

重要

カスタム ユーザー データを使用するには、まずカスタム ユーザー データを有効にする 必要があります。

現在ログインしているユーザーのカスタム ユーザー データは、そのユーザーの Userオブジェクトを通じて読み取ることができます。 Userオブジェクトを使用してカスタムユーザー データを編集することはできません。 カスタム ユーザー データを編集するには、「カスタム ユーザー データの更新」を参照してください。 データにアクセスするには、 Use.customData() メソッドを ログイン ユーザーのUserオブジェクトのメソッドを使用します。

Credentials anonymousCredentials = Credentials.anonymous();
app.loginAsync(anonymousCredentials, it -> {
if (it.isSuccess()) {
Log.v("EXAMPLE", "Successfully authenticated anonymously.");
User user = app.currentUser();
Document customUserData = user.getCustomData();
Log.v("EXAMPLE", "Fetched custom user data: " + customUserData);
} else {
Log.e("EXAMPLE", it.getError().toString());
}
});
val anonymousCredentials: Credentials = Credentials.anonymous()
app.loginAsync(anonymousCredentials) {
if (it.isSuccess) {
Log.v("EXAMPLE", "Successfully authenticated anonymously.")
val user = app.currentUser()
val customUserData : Document? = user?.customData
Log.v("EXAMPLE", "Fetched custom user data: $customUserData")
} else {
Log.e("EXAMPLE", it.error.toString())
}
}

警告

カスタム データは古い可能性があります

Atlas App Services は、基礎となるデータが変更されたときにすぐにUser.customData()の値を動的に更新しません。 代わりに、ユーザーがアクセス トークンを更新するたびに、App Services は最新バージョンのカスタム ユーザー データを取得します。これは、App Services バックエンドにアクセスするほとんどの SDK 操作中に発生します。 Realm は30分ごとにアクセス トークンを更新するため、カスタム ユーザー データは30分以上古くなることはありません。

最新バージョンのカスタム ユーザー データが必要な場合は、 User.refreshCustomData() メソッドを使用して、ユーザーのカスタム データの最新バージョンをリクエストします。

Tip

カスタム ユーザー データを作成、更新、または削除するには、カスタム ユーザー データ構成の次の情報が必要です。

  • カスタムユーザーデータクラスター

  • カスタムユーザーデータベース

  • カスタムユーザーデータドキュメントが保存される カスタムユーザーデータコレクション

  • カスタムユーザーデータドキュメントをユーザーにマッピングするために使用されるID ID )

この情報は、App Services UI の App Usersページの [ Custom User Data ] タブで確認できます。

ユーザーのカスタム ユーザー データを作成するには、カスタム ユーザー データ コレクションに MongoDB ドキュメントを作成します。 ドキュメントの ユーザー ID フィールドには、ユーザーのユーザー ID が含まれている必要があります。 次の例では、 MongoDB Data Accessを使用して、現在ログインしているユーザーのユーザー ID とfavoriteColor値を含むドキュメントをカスタム ユーザー データ コレクションに挿入します。

Credentials credentials = Credentials.anonymous();
app.loginAsync(credentials, it -> {
if (it.isSuccess()) {
User user = app.currentUser();
MongoClient mongoClient =
user.getMongoClient("mongodb-atlas"); // service for MongoDB Atlas cluster containing custom user data
MongoDatabase mongoDatabase =
mongoClient.getDatabase("custom-user-data-database");
MongoCollection<Document> mongoCollection =
mongoDatabase.getCollection("custom-user-data-collection");
mongoCollection.insertOne(
new Document("user-id-field", user.getId()).append("favoriteColor", "pink").append("_partition", "partition"))
.getAsync(result -> {
if (result.isSuccess()) {
Log.v("EXAMPLE", "Inserted custom user data document. _id of inserted document: "
+ result.get().getInsertedId());
} else {
Log.e("EXAMPLE", "Unable to insert custom user data. Error: " + result.getError());
}
});
} else {
Log.e("EXAMPLE", "Failed to log in anonymously:" + it.getError().toString());
}
});
val anonymousCredentials: Credentials = Credentials.anonymous()
app.loginAsync(anonymousCredentials) {
if (it.isSuccess) {
val user = app.currentUser()
val mongoClient : MongoClient =
user?.getMongoClient("mongodb-atlas")!! // service for MongoDB Atlas cluster containing custom user data
val mongoDatabase : MongoDatabase =
mongoClient.getDatabase("custom-user-data-database")!!
val mongoCollection : MongoCollection<Document> =
mongoDatabase.getCollection("custom-user-data-collection")!!
mongoCollection.insertOne(Document("user-id-field", user.id).append("favoriteColor", "pink").append("_partition", "partition"))
.getAsync { result ->
if (result.isSuccess) {
Log.v("EXAMPLE", "Inserted custom user data document. _id of inserted document: ${result.get().insertedId}")
} else {
Log.e("EXAMPLE", "Unable to insert custom user data. Error: ${result.error}")
}
}
} else {
Log.e("EXAMPLE", "Failed to log in anonymously: ${it.error}")
}
}

カスタム ユーザー データ ドキュメントの作成時に、任意の数のフィールドと値を追加できます。 ユーザー ID フィールドは、ドキュメントがカスタム ユーザー データとしてUserオブジェクトで使用可能になるための 唯一 の要件です。

MongoDB Data Access 、 Realm SyncMongoDB Compass 、またはMongoDB Atlas Data Explorer を使用してカスタム ユーザー データをアップデートできます。

MongoDB Data Access を使用してユーザーのカスタム ユーザー データを更新するには、ユーザーのユーザー ID がユーザーのユーザー ID フィールドに含まれる MongoDB ドキュメントを編集します。

Tip

ユーザーの ID を確認するには、 App Users User.idプロパティにアクセスするか、App Services UI で [] ページの [ Users ] タブでユーザーを見つけます。

次の例ではMongoDB Data Accessを使用して、カスタム ユーザー データ コレクション内の現在ログインしているユーザーのユーザー ID を含むドキュメントのfavoriteColorフィールドを更新します。

Credentials credentials = Credentials.anonymous();
app.loginAsync(credentials, it -> {
if (it.isSuccess()) {
User user = app.currentUser();
MongoClient mongoClient =
user.getMongoClient("mongodb-atlas"); // service for MongoDB Atlas cluster containing custom user data
MongoDatabase mongoDatabase =
mongoClient.getDatabase("custom-user-data-database");
MongoCollection<Document> mongoCollection =
mongoDatabase.getCollection("custom-user-data-collection");
mongoCollection.updateOne(
new Document("user-id-field", user.getId()), new Document("favoriteColor", "cerulean"))
.getAsync(result -> {
if (result.isSuccess()) {
if (result.get().getModifiedCount() == 1L) {
Log.v("EXAMPLE", "Updated custom user data document.");
} else {
Log.v("EXAMPLE", "Could not find custom user data document to update.");
}
} else {
Log.e("EXAMPLE", "Unable to insert custom user data. Error: " + result.getError());
}
});
} else {
Log.e("EXAMPLE", "Failed to log in anonymously:" + it.getError().toString());
}
});
val anonymousCredentials: Credentials = Credentials.anonymous()
app.loginAsync(anonymousCredentials) {
if (it.isSuccess) {
val user = app.currentUser()
val mongoClient : MongoClient =
user?.getMongoClient("mongodb-atlas")!! // service for MongoDB Atlas cluster containing custom user data
val mongoDatabase : MongoDatabase =
mongoClient.getDatabase("custom-user-data-database")!!
val mongoCollection : MongoCollection<Document> =
mongoDatabase.getCollection("custom-user-data-collection")!!
mongoCollection.updateOne(Document("user-id-field", user.id), Document("favoriteColor", "cerulean"))
.getAsync { result ->
if (result.isSuccess) {
if (result.get().modifiedCount == 1L) {
Log.v("EXAMPLE", "Updated custom user data document.")
} else {
Log.v("EXAMPLE", "Could not find custom user data document to update.")
}
} else {
Log.e("EXAMPLE", "Unable to update custom user data. Error: ${result.error}")
}
}
} else {
Log.e("EXAMPLE", "Failed to log in anonymously: ${it.error}")
}
}

戻る

ユーザーの認証