2017-09-15 391 views
0

我正在使用Firebase身份验证。我正尝试使用Google帐号在用户中唱歌,使用signInWithCredential方法。从谷歌的证书是好的,但是当我尝试与火力用户签我得到一个错误:Firebase没有用户记录GoogleSingin

login error: signInWithCredential:failure com.google.firebase.auth.FirebaseAuthInvalidUserException: There is no user record corresponding to this identifier. The user may have been deleted. at com.google.android.gms.internal.zzdjy.zzak(Unknown Source:84) at com.google.android.gms.internal.zzdja.zza(Unknown Source:12)com.google.android.gms.internal.zzdki.zzal(Unknown Source:11)com.google.android.gms.internal.zzdkk.onFailure(Unknown Source:35)com.google.android.gms.internal.zzdka.onTransact(Unknown Source:79)android.os.Binder.execTransact(Binder.java:674)

我会理解的错误,如果我将与电子邮件地址和密码提供用户唱歌不包含Google凭据。

而这个错误来自一个新项目,所以没有用户进行过身份验证。

我已经尝试在gradle中更改signingConfigs并更改Firebase控制台中的sha1键。多次删除该项目,我似乎无法让它工作。

这很奇怪,因为我记得过去我没有问题。

帮助,如果你不能。谢谢。

来源:

private static final int RC_SIGN_IN = 1; 
private GoogleApiClient mGoogleApiClient; 
private FirebaseAuth mAuth; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    mAuth = FirebaseAuth.getInstance(); 
    GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) 
      .requestIdToken(getString(R.string.default_web_client_id)) 
      .requestEmail() 
      .build(); 
    mGoogleApiClient = new GoogleApiClient.Builder(this) 
      .enableAutoManage(this /* FragmentActivity */, this /* OnConnectionFailedListener */) 
      .addApi(Auth.GOOGLE_SIGN_IN_API, gso) 
      .build(); 
    findViewById(R.id.sign).setOnClickListener(this); 
} 

private void signIn() { 
    Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient); 
    startActivityForResult(signInIntent, RC_SIGN_IN); 
} 

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if (requestCode == RC_SIGN_IN) { 
     GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data); 
     if (result.isSuccess()) { 
      GoogleSignInAccount account = result.getSignInAccount(); 
      firebaseAuthWithGoogle(account); 
     } else { 
      Log.d("login", "googleSignInRsult:error"); 
     } 
    } 
} 

private void firebaseAuthWithGoogle(GoogleSignInAccount acct) { 
    AuthCredential credential = GoogleAuthProvider.getCredential(acct.getIdToken(), null); 
    mAuth.signInWithCredential(credential) 
      .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { 
       @Override 
       public void onComplete(@NonNull Task<AuthResult> task) { 
        if (task.isSuccessful()) { 
         Log.d("login", "signInWithCredential:success"); 
        } else { 
         Toast.makeText(MainActivity.this, "Authentication failed.", 
           Toast.LENGTH_SHORT).show(); 
         Log.w("login", "signInWithCredential:failure", task.getException()); 
        } 
       } 
      }); 
} 
+0

你可以发布源代码吗? – willermo

+0

在这里你去。添加了代码。 – Luke

回答

0

重新安装的Android Studio和现在的一切工作。