Ich versuche zu folgen this tutorial.GoogleAuthProvider.getCredential-Methode funktioniert nicht für mich
Und Ich habe diese firebaseAuthWithGoogle Funktion:
public void firebaseAuthWithGoogle(Activity context,FirebaseAuth mAuth, GoogleSignInAccount acct) {
Log.i(TAG, "firebaseAuthWithGoogle:" + acct.getId());
AuthCredential credential = GoogleAuthProvider.getCredential(acct.getIdToken(), null);
mAuth.signInWithCredential(credential)
.addOnCompleteListener(context, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
Log.i(TAG, "firebase signInWithCredential:onComplete:" + task.isSuccessful());
// If sign in fails, display a message to the user. If sign in succeeds
// the auth state listener will be notified and logic to handle the
// signed in user can be handled in the listener.
if (!task.isSuccessful()) {
Log.i(TAG, "firebase signInWithCredential" + task.getException());
}
// ...
}
});
}
Was ich von hier nennen:
final GoogleSignInAccount acct = result.getSignInAccount();
AsyncTask asyncTask = new AsyncTask() {
@Override
protected Object doInBackground(Object[] params) {
try{
String scope = "oauth2:" + Scopes.PROFILE;
Account account = new Account(acct.getEmail(), "com.google");
final String token = GoogleAuthUtil.getToken(PSSignInFlowActivity.this, account, scope); PSSocialService.getInstance().firebaseAuthWithGoogle(PSSignInFlowActivity.this, PSApplicationClass.getInstance().mAuth, acct);
}catch (Exception e){
Log.e("","firebase error trying to get client secret : " + e.getMessage());
}
return null;
}
};
asyncTask.execute();
Mein idToken ist: firebaseAuthWithGoogle: 1024xxxxxxxxxxxxxx956 (so ist es nicht null ist, fügte hinzu, es vielleicht I‘ Ich sende nicht, was ich auch supposed bin?)
Aber wenn ich debugge, erhalte ich diesen Fehler: Must specify an idToken or an accessToken.
Was mache ich falsch? Sie verwenden die gleiche Logik auf dem Tutorial PS: Ich bin auf compile 'com.google.firebase:firebase-auth:10.2.0'
wenn es
EDIT wichtig ist: Ich habe bemerkt, dass acct.getIdToken()
gibt null zurück, warum ist das so? Sollte der GoogleSignInAccount kein idToken haben? Ich war ausloggen acct.getId()
das ist die 1024xxxxxxxxxxxxx956 Ich schrieb oberen.
EDIT2: Ich habe meine GSO diese Option:
.requestIdToken(serverID)
Und ich bekomme jetzt die idToken, aber ich habe diese Antwort zurück:
04-05 10:34:16.388: I/PSSocialService(6285): firebase signInWithCredentialcom.google.firebase.FirebaseException: An internal error has occurred. [ Invalid Idp Response ]
serverID ist: 264xxxxxxxxxx27.apps.googleusercontent .com Ist das der richtige Wert, den ich verwenden sollte? Im Tutorial sie verwenden:
.requestIdToken(getString(R.string.default_web_client_id))
Aber ich versuchte, das, und es stürzt ab, weil es sagt, dass ich die gleiche clientID verwenden müssen. Ich benutze serverID für .requestServerAuthCode(serverID)
und ich denke, das ist, warum