Firebase createUser()
メソッドは電子メールとパスワードのフィールドを受け取りますが、Snapchat、Instagram、StackOverflowなどのようなカスタムユーザー名もユーザーに許可したい場合はどうすればよいですか?既存のメソッドを変更してそのフィールドを受け入れる方法はありますか、この情報を手動でプッシュして管理する必要がありますか?
これは、目的のユーザー情報を保存する最初の試みです。
_Firebase ref = new Firebase(firebaseURL);
ref.createUser(email, password, new Firebase.ValueResultHandler<Map<String, Object>>() {
@Override
public void onSuccess(Map<String, Object> result) {
System.out.println("Successfully created user account with uid: " + result.get("uid"));
//Sign user in
Firebase ref = new Firebase(firebaseURL);
ref.authWithPassword(email, password, new Firebase.AuthResultHandler() {
@Override
public void onAuthenticated(AuthData authData) {
System.out.println("User ID: " + authData.getUid() + ", Provider: " + authData.getProvider());
//Save user info
Firebase userRef = new Firebase(firebaseURL + "Users/");
User user = new User(username, authData.getUid());
userRef.setValue(user);
_
これは良い習慣ですか? UIDをユーザー名とともに保存すると、将来の変更処理などに役立つ可能性があると考えました。また、updateChildren()
またはPush()
メソッドを実装して、エントリが上書きされないようにする必要がありますソーシャルメディアアプリですか?
これは私の2回目の試みです。
_ @Override
public void onAuthenticated(AuthData authData) {
System.out.println("User ID: " + authData.getUid() + ", Provider: " + authData.getProvider());
//Save user info and username
Firebase ref = new Firebase(firebaseURL);
Map<String, String> map = new HashMap<String, String>();
map.put("email", email);
map.put("username", username);
map.put("provider", authData.getProvider());
ref.child("users").child(authData.getUid()).setValue(map);
_
3つのフィールドを持つフォームを表示します。
後者の2つをFirebaseのcreateUser()
メソッドに送信します。次に、そのための完了コールバックで、すべての情報をFirebaseデータベースに保存します。
var userName, emailAddress, password;
// TODO: read these values from a form where the user entered them
var ref = new Firebase("https://<YOUR-FIREBASE-APP>.firebaseio.com");
ref.createUser({
email : emailAddress,
password : password
}, function(error, authData) {
if (error) {
console.log("Error creating user:", error);
} else {
// save the user's profile into the database so we can list users,
// use them in Security and Firebase Rules, and show profiles
ref.child("users").child(authData.uid).set({
provider: authData.provider,
name: userName
});
}
});
詳細については、Firebaseドキュメントの ユーザーデータの保存 のこのページを参照してください。
はい、Firebaseでユーザー情報を更新する方法があります。必要なもの-Firebaseドキュメントでこの記事を読み、ここで説明する方法を実装するには pdate user info
このメソッドを使用すると、FirabaseUserオブジェクトのdiplayNameプロパティを更新できます。 displayNameプロパティにユーザー名を設定し、変更をコミットするだけです。
これがお役に立てば幸いです。
登録した詳細をデータベースに保存する方法の1つは、
Map<String, String> parameters = new HashMap<>();
FirebaseDatabase mFirebaseInstance;
parameters.put(Constant.TAG_USER, strUsrS.trim());
parameters.put(Constant.TAG_EMAIL, strEmailS.trim());
parameters.put(Constant.TAG_PASS, strPassS.trim());
//use this if needed(pushId)
String pushId = mFirebaseInstance.getReference(YOUR TABLE NAME).getRef().Push().getKey();
parameters.put(Constant.TAG_KEY, pushId.trim());
mFirebaseInstance.getReference(YOUR TABLE NAME).getRef().child(strUsrS.trim()).setValue(parameters);
この実装を試して実行してください...ありがとう
Firebaseの必須フィールドを使用してテーブルを変更(作成)する方法を知っていることを願っています。