Androidアプリにfirebase authを統合しました。ユーザーにメール[email protected]
があるとしましょう。ユーザーの名前、職業、住所などの追加情報をユーザーに追加します。ユーザー認証テーブルをAndroidアプリに接続してそれを行うにはどうすればよいですか?
そのためのAPIを記述する必要はありますか?
まず、dbにusers
ディレクトリを作成します。次に、authnプロセスから取得したユーザーの一意のIDを使用して、ユーザー情報をusers/{userid}
の下に保存します。
これを実現するには、Firebaseデータベースの詳細を取得する必要があります。こちらをご覧ください: https://firebase.google.com/docs/database/Android/save-data
これを行うためにカスタムコードを記述する必要はありません。 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ルールの両方で一致する必要があります。一致しない場合、永続しません。
すべてが想定どおりに進んだ場合、データベースに詳細が表示されるはずです。
「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);
}