gpt4 book ai didi

android - 保存数据时登录失败。(注册)

转载 作者:搜寻专家 更新时间:2023-11-01 09:31:49 25 4
gpt4 key购买 nike

我正在制作一个 Android 项目,对于初学者,我一直在弄清楚注册的工作原理。顺便说一下,我为此使用了 Firebase。这是我的代码:

package com....

import...


public class MainActivity extends AppCompatActivity {

//VIEW AND WIDGETS
Button createUser, moveToLoginBtn;
EditText userEmailEdit, userPasswordEdit;

//FIREBASE AUTH FIELDS
FirebaseAuth nAuth;
FirebaseAuth.AuthStateListener nAuthlistener;

DatabaseReference mDatabaseRef, mUserCheckData;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);


//ASSIGN ID
createUser = (Button) findViewById(R.id.createUserBtn);
moveToLoginBtn = (Button) findViewById(R.id.moveToLogin);
userEmailEdit = (EditText) findViewById(R.id.emailEditTextCreate);
userPasswordEdit = (EditText) findViewById(R.id.passEditTextCreate);

//ASSIGN INSTANCE
mDatabaseRef = FirebaseDatabase.getInstance().getReference();
mUserCheckData = FirebaseDatabase.getInstance().getReference().child("Users");
nAuth = FirebaseAuth.getInstance();


nAuthlistener = new FirebaseAuth.AuthStateListener(){
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {

FirebaseUser user = firebaseAuth.getCurrentUser();

if (user != null) {

final String emailForVer = user.getEmail();
mUserCheckData.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {

checkUserValidation(dataSnapshot, emailForVer);

}

@Override
public void onCancelled(DatabaseError databaseError) {

}
});

} else {


}


}

};

//ON CLICK LISTENER

createUser.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view) {

final String userEmailString, userPassString;
userEmailString = userEmailEdit.getText().toString().trim();
userPassString = userPasswordEdit.getText().toString().trim();

if (!TextUtils.isEmpty(userEmailString) && !TextUtils.isEmpty(userPassString))
{
nAuth.createUserWithEmailAndPassword(userEmailString,userPassString).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {

if (task.isSuccessful())
{


DatabaseReference mChildDatabase = mDatabaseRef.child("Users").push();
String key_user = mChildDatabase.getKey();
mChildDatabase.child("isVerified").setValue("unverified");
mChildDatabase.child("userKey").setValue(key_user);
mChildDatabase.child("emailUser").setValue(userEmailString);
mChildDatabase.child("passWordUser").setValue(userPassString);
Toast.makeText(MainActivity.this, "User Account Created!", Toast.LENGTH_LONG).show();

startActivity(new Intent(MainActivity.this, Profile.class));
}
else
{
Toast.makeText(MainActivity.this, "User Account Creation Fail", Toast.LENGTH_LONG).show();
startActivity(new Intent(MainActivity.this, MainActivity.class));

}
}
});
}



}
});

//MOVE TO LOGIN

moveToLoginBtn.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view){

startActivity(new Intent(MainActivity.this, LoginActivity.class));



}
});

}

private void checkUserValidation(DataSnapshot dataSnapshot, String emailForVer) {


Iterator iterator = dataSnapshot.getChildren().iterator();

while (iterator.hasNext())
{

DataSnapshot dataUser = (DataSnapshot) iterator.next();



if(String.valueOf(dataUser.child("emailUser").getValue()).equals(emailForVer) && dataUser.child("emailUser") != null)
{

if(String.valueOf(dataUser.child("isVerified").getValue()).equals("unverified") && dataUser.child("isVerified") != null)
{

Intent in = new Intent(MainActivity.this, Profile.class);
in.putExtra("USER_KEY" , String.valueOf(dataUser.child("userKey").getValue()));
startActivity(in);
//in.putExtra("NAME_KEY" , String.valueOf(dataUser.child("nameKey").getValue()));



}else
{
startActivity(new Intent(MainActivity.this, Welcome.class));
}

}

}

}

@Override
protected void onStart() {
super.onStart();

nAuth.addAuthStateListener(nAuthlistener);
}

@Override
protected void onStop() {
super.onStop();

nAuth.removeAuthStateListener(nAuthlistener);
}
}

我想我已经正确地实现了我的方法。但它 toast :

User Account Creation Failed

是我的checkUseValidation() 方法错误?任何形式的帮助表示赞赏。

另外请关注我的:

 public void onComplete

方法,我想我已经设置好了。我不知道为什么数据没有保存到 firebase 数据库中。或者为什么任务不成功,如行所示:

  if (task.isSuccessful())

非常感谢。

最佳答案

首先,您应该将失败条件下的 toast 更改为

Toast.makeText(MainActivity.this, task.getException().getMessage(), Toast.LENGTH_LONG).show();

这样您就可以在任务中找到错误的地方。

但在此之前,您是否在控制台启用电子邮件/密码????

关于android - 保存数据时登录失败。(注册),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46567822/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com