web-dev-qa-db-ja.com

firebaseで追加のユーザー情報を追加する

Androidアプリにfirebase authを統合しました。ユーザーにメール[email protected]があるとしましょう。ユーザーの名前、職業、住所などの追加情報をユーザーに追加します。ユーザー認証テーブルをAndroidアプリに接続してそれを行うにはどうすればよいですか?

そのためのAPIを記述する必要はありますか?

30
Jason Bourne

まず、dbにusersディレクトリを作成します。次に、authnプロセスから取得したユーザーの一意のIDを使用して、ユーザー情報をusers/{userid}の下に保存します。

これを実現するには、Firebaseデータベースの詳細を取得する必要があります。こちらをご覧ください: https://firebase.google.com/docs/database/Android/save-data

17

これを行うためにカスタムコードを記述する必要はありません。 Firebaseには、使用できる機能が既にあります。

最初に行う必要があるのは、ユーザーが保存したデータのみにアクセスできるようにすることです。これを行うには、Database/Rulesに移動し、ルールを次のように変更します。

{
"rules": {
  "my_app_user": {
    "$uid": {
      ".write": "auth != null && auth.uid == $uid",
      ".read": "auth != null && auth.uid == $uid"
     }
   }
 }
}

次に、Firebaseデータベースに新しい詳細を保存するには、次の操作を行います。

        MyAppUser user = new MyAppUser();
        user.setAddressTwo("address_two");
        user.setPhoneOne("phone_one");
        ...

        mDatabaseReference.child("my_app_user").child(firebaseUser.getUid()).setValue(user).
                addOnCompleteListener(DetailsCaptureActivity.this,
                                   new OnCompleteListener<Void>() {
                    @Override
                    public void onComplete(@NonNull Task<Void> task) {
                        if (task.isSuccessful()) {
                            ...

子の名前my_app_userは、コードとFirebaseルールの両方で一致する必要があります。一致しない場合、永続しません。

すべてが想定どおりに進んだ場合、データベースに詳細が表示されるはずです。

enter image description here

13

「user」という別のデータベーステーブルを作成する必要があります。サインインに成功したら、初めてサインアップして、ユーザーテーブルに新しい行を作成する必要があります。

public static void writeNewUser(DatabaseReference databaseReference, String userId, String name, String email, int accountType) {
    User user = new User(name, email, accountType);

    databaseReference.child("users").child(userId).setValue(user);
}

参照してください https://github.com/firebase/quickstart-Android/tree/61f8eb53020e38b1fdc5aaeddac2379b25240f3b/database

3