0

Wie kann ich signInWithCredential() anstelle von signInWithPopup() verwenden. signInWithPopup funktioniert nicht auf meinem Handy Google Chrome Browser, habe ich überprüft und festgestellt, dass es ein bekanntes Problem ist und stattdessen signInWithCredential() verwenden. Wie auch immer, ich kann es nicht zur Arbeit bringen, mein aktueller Code, der signInWithPopup() verwendet, ist wie folgt. Jede Art von Seele kann mir helfen? DankGoogle Anmelden mit firebase

login() { 
    return new Promise((resolve) => { 
     this.afAuth.auth.signInWithPopup(new firebase.auth.GoogleAuthProvider()).then(() => { 
     this.afAuth.authState.take(1).subscribe(async (authState) => { 
      resolve(authState); 
     }); 
     }); 
    }); 
    } 
+0

Was ist dieses bekannte Problem, auf das Sie sich beziehen? – bojeil

Antwort

0

signInWithCredential verwenden, müssten Sie eine AuthCredential mit einem OAuth ID-Token/Zugriffstoken initialisieren. Zum Beispiel:

const cred = firebase.auth.GoogleAuthProvider.credential(googleIdToken, googleAccessToken); 
firebase.auth().signInAndRetrieveDataWithCredential(cred) 
    .then(userCredential => { 
    // Success. 
    }) 
    .catch(error => { 
    // error occurred. 
    }); 

Sie können die Google-Zeichen in der Bibliothek verwenden, um ein Google-ID-Token zu erhalten: https://developers.google.com/identity/sign-in/web/sign-in

Dies ist nur für Browser funktioniert. Wenn Sie dies in anderen Umgebungen ohne Browser verwenden, benötigen Sie eine OAuth-Bibliothek von Drittanbietern, um die entsprechenden OAuth-Anmeldeinformationen zu erhalten.