java登录到google firebase
这是我的java代码:
public void saveData(String email,String pass){
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString(EMAIL,email);
editor.putString(PASS,pass);
editor.putBoolean(REMEMBER,checkBox.isChecked());
editor.commit();
}
private void loadData() {
if(sharedPreferences.getBoolean(REMEMBER,false)) {
edt_tendangnhap.setText(sharedPreferences.getString(EMAIL, ""));
edt_matkhau.setText(sharedPreferences.getString(PASS, ""));
checkBox.setChecked(true);
}
else
checkBox.setChecked(false);
}
private void clearData() {
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.clear();
editor.commit();
}
private void addcontrols(){
edt_tendangnhap = (EditText) findViewById(R.id.edt_tendangnhap);
edt_matkhau = (EditText) findViewById(R.id.edt_matkhau);
btn_dangnhap = (Button)findViewById(R.id.btn_dangnhap);
btn_dangky = (Button) findViewById(R.id.btn_dangky);
getBtn_dangnhapgoole = (Button) findViewById(R.id.btn_dangnhapgoogle);
quenmk = (TextView) findViewById(R.id.quenmk);
checkBox = (CheckBox) findViewById(R.id.checkbox);
}
private void addEvents(){
btn_dangnhap.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mAuth = FirebaseAuth.getInstance();
final String email = edt_tendangnhap.getText().toString();
final String password = edt_matkhau.getText().toString();
if (checkBox.isChecked()){
saveData(email,password);
}
else {
clearData();
}
if(TextUtils.isEmpty(email)){
Toast.makeText(MainActivity.this,"Vui lòng điền email",Toast.LENGTH_SHORT).show();
return;
}
if (TextUtils.isEmpty(password)){
Toast.makeText(MainActivity.this,"Vui lòng nhập mật khẩu",Toast.LENGTH_SHORT).show();
return;
}
mAuth.signInWithEmailAndPassword(email,password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()){
FirebaseUser currentUser = mAuth.getCurrentUser();
String email=currentUser.getEmail();
String uid=currentUser.getUid();
FirebaseDatabase firebaseDatabase=FirebaseDatabase.getInstance();
DatabaseReference reference=firebaseDatabase.getReference("Users");
String admin = "admin@gmail.com";
boolean sosanh = email.equals(admin);
if ( sosanh == true){
Toast.makeText(MainActivity.this, "Đăng nhập thành công admin", Toast.LENGTH_SHORT).show();
ProgressDialog dialog = new ProgressDialog(MainActivity.this);
dialog.setTitle("ĐĂNG NHẬP");
dialog.setMessage("Login Admin......");
dialog.setCanceledOnTouchOutside(false);
dialog.show();
Intent intent = new Intent(MainActivity.this, Admin_QuanLy.class);
startActivity(intent);
}
else {
Toast.makeText(MainActivity.this, "Đăng nhập thành công", Toast.LENGTH_SHORT).show();
ProgressDialog dialog = new ProgressDialog(MainActivity.this);
dialog.setTitle("ĐĂNG NHẬP");
dialog.setMessage("Vui lòng đợi chúng tôi kiểm tra tài khoản của bạn");
dialog.setCanceledOnTouchOutside(false);
dialog.show();
Intent intent = new Intent(MainActivity.this, Main2Activity.class);
startActivity(intent);
}
}
else {
Toast.makeText(MainActivity.this,"Đăng nhập thất bại",Toast.LENGTH_SHORT).show();
}
}
});
}
});
btn_dangky.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final Dialog dialog = new Dialog(MainActivity.this);
dialog.setTitle("Đăng ký");
dialog.show();
dialog.setCancelable(false);
dialog.setContentView(R.layout.custom_dangky);
final EditText edt_tk = (EditText) dialog.findViewById(R.id.edt_tk);
final EditText edt_mk = (EditText) dialog.findViewById(R.id.edt_mk);
Button btn_dongy = (Button) dialog.findViewById(R.id.btn_dongy);
Button btn_huy = (Button) dialog.findViewById(R.id.btn_huy);
btn_dongy.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mAuth = FirebaseAuth.getInstance();
final String email = edt_tk.getText().toString();
final String password = edt_mk.getText().toString();
if(TextUtils.isEmpty(email)){
Toast.makeText(MainActivity.this,"Vui lòng điền email",Toast.LENGTH_SHORT).show();
return;
}
if (TextUtils.isEmpty(password)){
Toast.makeText(MainActivity.this,"Vui lòng nhập mật khẩu",Toast.LENGTH_SHORT).show();
return;
}
mAuth.createUserWithEmailAndPassword(email ,password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()){
mAuth= FirebaseAuth.getInstance();
FirebaseUser user = mAuth.getCurrentUser();
Toast.makeText(getApplicationContext(),"Đăng ký thành công",Toast.LENGTH_SHORT).show();
dialog.cancel();
edt_tendangnhap.setText(email);
edt_matkhau.setText(password);
}
}
});
}
});
btn_huy.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.cancel();
}
});
dialog.show();
}
});
quenmk.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final Dialog dialog = new Dialog(MainActivity.this);
dialog.setTitle("Đăng ký");
dialog.show();
dialog.setCancelable(false);
dialog.setContentView(R.layout.custom_quen_mat_khau);
final EditText edt_email = (EditText) dialog.findViewById(R.id.edt_quenmatkhau);
Button btn_dongy = (Button) dialog.findViewById(R.id.btn_dongy_quenmk);
Button btn_trove = (Button) dialog.findViewById(R.id.btn_trove);
btn_dongy.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String email = edt_email.getText().toString().trim();
if (TextUtils.isEmpty(email)) {
Toast.makeText(getApplication(), "Vui lòng nhập email", Toast.LENGTH_SHORT).show();
return;
}
mAuth.getCurrentUser().getEmail();
mAuth.sendPasswordResetEmail(email).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()){
Toast.makeText(getApplication(), "Một đường dẫn tạo lại mật khẩu sẽ được gửi về email của bạn", Toast.LENGTH_SHORT).show();
}else {
Toast.makeText(getApplication(), "Có lỗi...", Toast.LENGTH_SHORT).show();
}
}
});
}
});
btn_trove.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.cancel();
}
});
dialog.show();
}
});
getBtn_dangnhapgoole.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DangNhapGoogle(apiClient);
}
});
}
private void TaoClientDangNhapGoogle(){
GoogleSignInOptions signInOptions = new GoogleSignInOptions.Builder()
.requestIdToken(getString(R.string.default_web_client_id))
.requestEmail()
.build();
apiClient = new GoogleApiClient.Builder(this)
.enableAutoManage(this,this)
.addApi(Auth.GOOGLE_SIGN_IN_API,signInOptions).build();
}
private void DangNhapGoogle(GoogleApiClient apiClient){
KIEMTRA_PROVIDERDANGNHAP = 1;
Intent iDNgoogle = Auth.GoogleSignInApi.getSignInIntent(apiClient);
startActivityForResult(iDNgoogle,CODE_DANG_GOOGLE);
}
private void ChungThucDangNhapFireBase(String tokenID){
if (KIEMTRA_PROVIDERDANGNHAP == 1){
AuthCredential authCredential = GoogleAuthProvider.getCredential(tokenID,null);
mAuth.signInWithCredential(authCredential).addOnCompleteListener(this,new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
Toast.makeText(MainActivity.this, "Đăng nhập thành công", Toast.LENGTH_SHORT).show();
}
});
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == CODE_DANG_GOOGLE){
if (resultCode == RESULT_OK){
if (data!=null){
GoogleSignInResult signInResult = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
GoogleSignInAccount account = signInResult.getSignInAccount();
String torkenID = account.getIdToken();
ChungThucDangNhapFireBase(torkenID);
}
}
}
}
@Override
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
}
@Override
protected void onStart() {
super.onStart();
if (mAuth != null) {
mAuth.addAuthStateListener(this);
}
}
@Override
protected void onStop() {
super.onStop();
if (mAuth != null){
mAuth.removeAuthStateListener(this);
}
}
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
FirebaseUser user = firebaseAuth.getCurrentUser();
if (user != null){
Toast.makeText(MainActivity.this, "Đăng nhập thành công", Toast.LENGTH_SHORT).show();
ProgressDialog dialog = new ProgressDialog(MainActivity.this);
dialog.setTitle("ĐĂNG NHẬP");
dialog.setMessage("Vui lòng đợi chúng tôi kiểm tra tài khoản của bạn");
dialog.setCanceledOnTouchOutside(false);
dialog.show();
Intent intent = new Intent(MainActivity.this,MainActivity.class);
startActivity(intent);
}else {
Toast.makeText(MainActivity.this, "Đăng nhập thất bại", Toast.LENGTH_SHORT).show();
}
}
我遇到了两个错误: 原因:java。lang.NullPointerException:尝试调用虚拟方法“com”。谷歌。安卓gms。任务。任务com。谷歌。火基。auth。FirebaseAuth。在空对象引用上登录WithCredential(com.google.firebase.auth.AuthCredential)”
无法将结果ResultInfo{who=null,request=3,result=-1,data=Intent{(有附加项)}}传递到活动{com.sict.ordermonan/com.sict.ordermonan.MainActivity}:java。lang.NullPointerException:尝试调用虚拟方法“com”。谷歌。安卓gms。任务。任务com。谷歌。火基。auth。FirebaseAuth。在空对象引用上登录WithCredential(com.google.firebase.auth.AuthCredential)”
共 (0) 个答案