web-dev-qa-db-ja.com

Android=アプリでFirebase(BaaS)を使用してメールとパスワードを保存するときにユーザー名を含めるにはどうすればよいですか?

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);
_
23

3つのフィールドを持つフォームを表示します。

  1. Username
  2. 電子メールアドレス
  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ドキュメントの ユーザーデータの保存 のこのページを参照してください。

15

はい、Firebaseでユーザー情報を更新する方法があります。必要なもの-Firebaseドキュメントでこの記事を読み、ここで説明する方法を実装するには pdate user info

このメソッドを使用すると、FirabaseUserオブジェクトのdiplayNameプロパティを更新できます。 displayNameプロパティにユーザー名を設定し、変更をコミットするだけです。

これがお役に立てば幸いです。

13
ostap_holub

登録した詳細をデータベースに保存する方法の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の必須フィールドを使用してテーブルを変更(作成)する方法を知っていることを願っています。

関連する質問とソリューションとの議論

0
Arnold Brown