0

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

Antwort

0

In der Feuerbasis Konsole für Authentification/Provider/Google es erforderlich ist, die alle externen cliend IDs hinzufügen, um sie zu weißen Liste. Deshalb würde es für mich nicht funktionieren

Verwandte Themen