Как сохранить пользователей электронной почты и имени после аутентификации в базе данных (Firebase)?

44
3

Я новичок в Android и новичок в Firebase. Я разрабатываю приложение для Android, где пользователь создает свою учетную запись с помощью электронной почты и пароля.

Как сохранить имя пользователя, имя и т.д. Вместе с электронной почтой в базу данных Firebase?

Вот мой код, в котором пользователь создан с помощью электронной почты и пароля и кода для дополнительной информации о пользователе для сохранения в базе данных.

Мое приложение разбивается после создания нового пользователя, а также не хранит информацию в базе данных.

auth.createUserWithEmailAndPassword(emailId, password)
.addOnCompleteListener(MainActivity.this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {

if (task.isSuccessful()) {

String user_id = auth.getCurrentUser().getUid();

DatabaseReference current_user_db = reference.child(user_id);

current_user_db.child("FNAME").setValue(nameF);

current_user_db.child("LNAME").setValue(nameL);

current_user_db.child("EMAIL").setValue(email);

progress.hide();

Intent intent = new Intent(MainActivity.this, ProfileActivity.class);

intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

startActivity(intent);

}

}
});

Вот журнал.

06-17 21:01:17.082 2262-2262/com.google.android.googlequicksearchbox:search I/MicroDetectionWorker: #onError(false)
06-17 21:01:22.096 2262-2262/com.google.android.googlequicksearchbox:search I/MicroDetectionWorker: Micro detection mode: [mDetectionMode: [1]].
06-17 21:01:22.097 2262-2262/com.google.android.googlequicksearchbox:search I/AudioController: Using mInputStreamFactoryBuilder
06-17 21:01:22.103 2262-4023/com.google.android.googlequicksearchbox:search I/MicroRecognitionRunner: Starting detection.
06-17 21:01:22.112 2262-3576/com.google.android.googlequicksearchbox:search I/MicrophoneInputStream: mic_starting com.google.android.apps.gsa.staticplugins.z.c@4a20126
06-17 21:01:22.112 1304-1304/? W/APM_AudioPolicyManager: getInputForAttr() failed opening input: samplingRate 16000, format 1, channelMask 10
06-17 21:01:22.112 2262-3576/com.google.android.googlequicksearchbox:search E/AudioRecord: Could not get audio input for session 857, record source 1999, sample rate 16000, format 0x1, channel mask 0x10, flags 0
06-17 21:01:22.114 2262-3576/com.google.android.googlequicksearchbox:search E/AudioRecord-JNI: Error creating AudioRecord instance: initialization check failed with status -22.
06-17 21:01:22.114 2262-3576/com.google.android.googlequicksearchbox:search E/android.media.AudioRecord: Error code -20 when initializing native AudioRecord object.
06-17 21:01:22.114 2262-3576/com.google.android.googlequicksearchbox:search I/MicrophoneInputStream: mic_started com.google.android.apps.gsa.staticplugins.z.c@4a20126
06-17 21:01:22.115 2262-3576/com.google.android.googlequicksearchbox:search E/ActivityThread: Failed to find provider info for com.google.android.apps.gsa.testing.ui.audio.recorded
06-17 21:01:22.116 2262-2262/com.google.android.googlequicksearchbox:search I/MicroDetectionWorker: onReady
06-17 21:01:22.130 2262-3576/com.google.android.googlequicksearchbox:search I/MicrophoneInputStream: mic_close com.google.android.apps.gsa.staticplugins.z.c@4a20126
06-17 21:01:22.130 2262-4023/com.google.android.googlequicksearchbox:search I/MicroRecognitionRunner: Detection finished
06-17 21:01:22.130 2262-4023/com.google.android.googlequicksearchbox:search W/ErrorReporter: reportError [type: 211, code: 524300]: Error reading from input stream
06-17 21:01:22.131 2262-2432/com.google.android.googlequicksearchbox:search I/MicroRecognitionRunner: Stopping hotword detection.
06-17 21:01:22.131 2262-4023/com.google.android.googlequicksearchbox:search W/ErrorProcessor: onFatalError, processing error from engine(4)
com.google.android.apps.gsa.shared.speech.a.g: Error reading from input stream
at com.google.android.apps.gsa.staticplugins.recognizer.i.a.a(SourceFile:342)
at com.google.android.apps.gsa.staticplugins.recognizer.i.a$1.run(SourceFile:1367)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:428)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at com.google.android.apps.gsa.shared.util.concurrent.a.ak.run(SourceFile:66)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:761)
at com.google.android.apps.gsa.shared.util.concurrent.a.ad$1.run(SourceFile:85)
Caused by: com.google.android.apps.gsa.shared.exception.GsaIOException: Error code: 393238 | Buffer overflow, no available space.
at com.google.android.apps.gsa.speech.audio.Tee.g(SourceFile:2531)
at com.google.android.apps.gsa.speech.audio.ap.read(SourceFile:555)
at java.io.InputStream.read(InputStream.java:101)
at com.google.android.apps.gsa.speech.audio.al.run(SourceFile:362)
at com.google.android.apps.gsa.speech.audio.ak$1.run(SourceFile:471)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:428)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at com.google.android.apps.gsa.shared.util.concurrent.a.ak.run(SourceFile:66)
at com.google.android.apps.gsa.shared.util.concurrent.a.ax.run(SourceFile:139)
at com.google.android.apps.gsa.shared.util.concurrent.a.ax.run(SourceFile:139)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:761)
at com.google.android.apps.gsa.shared.util.concurrent.a.ad$1.run(SourceFile:85)
06-17 21:01:22.131 2262-4023/com.google.android.googlequicksearchbox:search I/AudioController: internalShutdown
06-17 21:01:22.133 2262-2262/com.google.android.googlequicksearchbox:search I/MicroDetector: Keeping mic open: false
06-17 21:01:22.133 2262-2262/com.google.android.googlequicksearchbox:search I/MicroDetectionWorker: #onError(false)
06-17 21:01:22.133 2262-4022/com.google.android.googlequicksearchbox:search I/DeviceStateChecker: DeviceStateChecker cancelled

спросил(а) 2017-06-17T17:08:00+03:00 2 года, 5 месяцев назад
1
Решение
46

Попробуйте использовать HashMap (личное мнение, которое я считаю более читаемым), это мой код для обновления пользовательских настроек, и вся функция вызывается через кнопку, надеюсь, что это поможет.

private void updatesettings() {
String UserName = username.getText().toString().toLowerCase().trim();
String PhoneNumber= pno.getText().toString();

FirebaseUser user = mauth.getCurrentUser();
String uid = user.getUid();

//this is to enter all the details under the UID of currently logged in user

dbr = FirebaseDatabase.getInstance().getReference().child("Users").child(uid);

HashMap<String, String> userMap = new HashMap<String, String>();
userMap.put("name", UserName);
userMap.put("phone number", PhoneNumber);
userMap.put("status", "jdjdjjdjdjdj");
userMap.put("image", "default");
userMap.put("thumbnail", "default");

dbr.setValue(userMap).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if(task.isSuccessful()){
// Toast.makeText(UpdateUserSettings.this, "Your settings have been updated", Toast.LENGTH_LONG).show();
startActivity(new Intent(UpdateUserSettings.this, MainActivity.class));
}
else{
Toast.makeText(UpdateUserSettings.this, task.getException().getMessage(), Toast.LENGTH_LONG).show();
}
}
});
}

ответил(а) 2017-06-17T18:35:00+03:00 2 года, 5 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема