大家好,我对FireBase创建用户和注册用户有问题。下面是注册和登录的代码。我得到空指针异常,无法理解原因。。初始化完成了,但经过了这么多天的努力,还是弄不明白。
注册:
public class RegisterActivity extends Activity {
private EditText mDisName;
private EditText mMail;
private EditText mPass;
private Button reg;
private TextView error;
private FirebaseAuth regAuth;
private ProgressBar myprog;
private int Progress =0;
private Handler myHandler= new Handler();
private DatabaseReference databaseRef;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
mDisName =(EditText) findViewById(R.id.reg_name);
mMail = (EditText) findViewById(R.id.reg_mail);
mPass = (EditText) findViewById(R.id.reg_password);
reg = (Button) findViewById(R.id.reg_button);
error = (TextView) findViewById(R.id.textView4);
myprog = (ProgressBar) findViewById(R.id.progressbar);
regAuth = FirebaseAuth.getInstance();
databaseRef = FirebaseDatabase.getInstance().getReference().child("UserNames :");
reg.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String disName = mDisName.getText().toString();
String dmail = mMail.getText().toString();
String pass = mPass.getText().toString();
new Thread(new Runnable() {
@Override
public void run() {
while(Progress < 100) {
Progress++;
android.os.SystemClock.sleep(30);
myHandler.post(new Runnable() {
@Override
public void run() {
myprog.setProgress(Progress);
}
});
}
}
}).start();
registerUser(disName,dmail,pass);
}
});
}
public void registerUser(final String displayName,String email, String password){
databaseRef.push().setValue(displayName);
-->Error line <-- regAuth.createUserWithEmailAndPassword(email, password).addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
Intent loginIntent = new Intent(RegisterActivity.this, login.class);
startActivity(loginIntent);
Spannable errormes = new SpannableString("\"Registration Successful As User :\"" + displayName);
errormes.setSpan(new ForegroundColorSpan(Color.GREEN), 0, errormes.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
error.setText(errormes);
//finish();
} else {
Toast.makeText(RegisterActivity.this, "Error with registration!", Toast.LENGTH_LONG).show();
error.setText(" Error 110! User already exists! \n Please provide different username!");
try {
throw task.getException();
} catch (FirebaseAuthWeakPasswordException e) {
Log.e("Exception", e.getMessage());
} catch (FirebaseAuthInvalidCredentialsException e) {
Log.e("Exception", e.getMessage());
} catch (FirebaseAuthUserCollisionException e) {
Log.e("Exception", e.getMessage());
} catch (Exception e) {
Log.e("Exception", e.getMessage());
}
}
}
});
}
}
正在发布注册活动的日志错误:
java.lang.com.google.android.gms.internal.zzdvv.zzb(未知来源)在com.google.android.gms.internal.zzdwc.zza(未知来源)在com.google.firebase.auth.Firebaseuth.create用户在com.package.myapp.注册ctivity.register用户(注册A<-plhd--7/>)在com.package.myapp.注册活动$1.on点击(注册ctivity.java:79)在android.view.View.perform点击(View.java:4438)在android.view.查看$PerformClick.run(View.java:18422)在android.os.Handler.handle回调(Handler.java:733)在android. os.在android. os.在android. app.ActivityThread. main(ActivityThread. java: 5017)在java. lang.反射。方法。方法调用(方法. java: 515)在com. android. interal. os。ZygoteInit$method odAndArgsCaller. run(ZygoteInit. java: 779)在com. android. interal. os。在dalvik. system上的ZygoteInit. main(ZygoteInit. java: 595)。NativeStart. main(本机方法)
登录时也会发生同样的情况(注册用户后,在站点上使用firebase plus按钮)
登录活动示例代码:
java.lang.IllegalStateExcture:无法在android.view.执行活动的方法查看$1.on单击(View.java:3823)android.view.View.perform单击(View.java:4438)android.view.查看$PerformClick.run(View.java:18422)android.os.Handler.handle回调(Handler.java:733)android.os.Handler.dispatch消息(Handler.java:95)在android.os.Looper.loop(Looper.java:136)在android.app.ActivityThread. main(ActivityThread. java: 5017)在java. lang.反射。方法。方法调用(方法. java: 515)在com. android. interal. os。ZygoteInit$method odAndArgsCaller. run(ZygoteInit. java: 779)在com. android. interal. os。在dalvik. system上的ZygoteInit. main(ZygoteInit. java: 595)。NativeStart. main(本地方法)引起:java. lang.反射。在java. lang.反射率。方法。在android. view.点击android. view(View. java: 3818)。点击(View. java: 4438)
还提供以下登录java类:
public class login extends Activity {
private EditText user;
private EditText password;
private TextView registerView;
private TextView loginView;
private Spannable errormes;
private FirebaseAuth mAuth;
private Button login;
private CallbackManager callbackManager ;
private ImageView loginIma;
private ImageView image;
private ImageView image2;
private CardView cardView;
private GoogleSignInOptions gso;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
user = (EditText) findViewById(R.id.username);
image=(ImageView)findViewById(R.id.imageView4);
image2=(ImageView)findViewById(R.id.imageView3);
errormes = new SpannableString("Error 100! User doesnt exists! \n Please register first");
userdatabase = FirebaseDatabase.getInstance().getReference().child("Users :");
mAuth = FirebaseAuth.getInstance();
registerView = (TextView) findViewById(R.id.registerView);
password = (EditText)findViewById(R.id.passwordView);
callbackManager = CallbackManager.Factory.create();
boolean loggedIn = AccessToken.getCurrentAccessToken() == null;
cardView=(CardView)findViewById(R.id.cardView);
loginView = (TextView) findViewById(R.id.loginView);
callbackManager = CallbackManager.Factory.create();
LoginManager.getInstance().registerCallback(callbackManager,
new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
Intent account = new Intent(login.this,menu_activity.class);
startActivity(account);
}
@Override
public void onCancel() {
Intent main = new Intent(login.this,login.class);
startActivity(main);
finish();
}
@Override
public void onError(FacebookException exception) {
Toast.makeText(login.this, "Error 500! Facebook login failed!", Toast.LENGTH_SHORT).show();
}
});
}
private int size = 0;
private HashMap<String, String> users = new HashMap<String, String>();
private DatabaseReference userdatabase;
private FirebaseAuth.AuthStateListener mAuthListener;
public void setSize(int newsize) {
this.size = newsize;
}
public void login(View view) {
EditText user = (EditText) findViewById(R.id.username);
EditText password = (EditText) findViewById(R.id.passwordView);
Spannable errormes = new SpannableString("Error 100! User doesnt exists! \n Please register first");
errormes.setSpan(new ForegroundColorSpan(Color.RED), 0, errormes.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
Intent userAcc = new Intent(login.this,menu_activity.class);
startActivity(userAcc);
**//error line** mAuth.signInWithEmailAndPassword(user.getText().toString(), password.getText().toString())
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
// Sign in success, update UI with the signed-in user's information
Log.d("Loged on!", "signInWithEmail:success");
Toast.makeText(login.this, "Loged On!.", Toast.LENGTH_SHORT).show();
Intent userAcc = new Intent(login.this,menu_activity.class);
startActivity(userAcc);
} else {
// If sign in fails, display a message to the user.
Log.w("Login Failed!", "signInWithEmail:failure", task.getException());
Toast.makeText(login.this, "Authentication failed.", Toast.LENGTH_SHORT).show();
}
// ...
}
});
}
如果有人能帮忙,我会很高兴的。提前感谢!
多亏了@BobSnyder,问题出在了api上。你必须安装带有(Google API)插件的API。
使用,https://github.com/firebase/FirebaseUI-Android/tree/master/codelabs/chat作为登录的参考,我在键入时似乎遇到了问题 我只能键入Auth的提供者,而不能键入,为什么会这样,它提示我键入社会提供者。
当使用Firebase身份验证匿名帐户时,它偶尔会在系统中创建一个新的用户ID,有时它会使用相同的用户ID。我真的希望每次都能创建相同的用户ID,这样匿名用户仍然可以在应用程序中维护相同的进度/数据。这实际上是我开始使用Firebase的原因。即使在重新启动应用程序等之后,我如何始终维护一个匿名帐户来保持相同的用户ID? 我希望用户每次以访客身份玩游戏时都能获得相同的ID。我看到有些应用程序在卸载
我试着用laravel做一个登录/注册的简单应用。。。我目前使用的是5.2版本的laravel。 在路线上,我写道: 所以现在当我尝试注册用户在localhost:8888/auth/register-我填写字段,但当我点击注册然后我得到错误消息: 用户中的FatalErrorException。php第8行:找不到类“lightlight\Foundation\Auth\User” 那么我如何在
本文向大家介绍firebase-authentication Google Plus登录身份验证,包括了firebase-authentication Google Plus登录身份验证的使用技巧和注意事项,需要的朋友参考一下 示例 使用Plus登录验证用户 onCreate onStart() 获取资料信息 使用Firebase进行身份验证, onActivityResult 登出
该应用程序应该接受用户电子邮件和密码,并使用Firebase身份验证作为后端。我使用像素2作为模拟器。每次应用程序处理登录功能时,它都会崩溃。 下面是Java文件和gradle文件 Java文件:
我一直在寻找使用各种AWS服务来处理我们下一个主要项目的基础设施。我们开始研究EC2实例上的docker容器,但在进一步研究AWS Lambda之后,这似乎是一条值得探索的道路。 使用AWS Lambda范例,我们只需使用Lambda函数作为逻辑粘合剂,将数据和事件(来自其他AWS服务)保存在一起。 例如,如果我们产品的用户创建了一个新记录,AWS Lambda可以在该事件中触发,我们可以调用La