Ich habe die folgende Methode implementiert, um mich mit einer Telefonnummer anzumelden in meinen Diensten:
Code: Select all
public async signInWithPhoneNumber(options: SignInWithPhoneNumberOptions,
loading: HTMLIonLoadingElement
): Promise {
try {
console.log("Attempting to sign in with phone number:", options.phoneNumber);
const user = await FirebaseAuthentication.signInWithPhoneNumber(options);
console.log('Sign-in successful');
} catch (error) {
console.error('Error during phone number verification:', error);
} finally {
await loading.dismiss();
}
}
Code: Select all
constructor(private readonly ngZone: NgZone) {
FirebaseAuthentication.removeAllListeners().then(() => {
FirebaseAuthentication.addListener('phoneCodeSent', async (event) => {
this.ngZone.run(() => {
console.log("phoneCodeSent"+ event.verificationId);
});
});
FirebaseAuthentication.addListener(
'phoneVerificationCompleted',
async (event) => {
this.ngZone.run(() => {
console.log("phoneVerificationCompleted"+ event.user?.uid);
});
},
);
FirebaseAuthentication.addListener(
'phoneVerificationFailed',
async (event) => {
this.ngZone.run(() => {
console.log("phoneVerificationFailed"+ event.message);
});
},
);
});
}
Ich erwarte den Aufruf von FirebaseAuthentication.signInWithPhoneNumber(options) Firebase sendet eine SMS Code und signInWithPhoneNumber(options), um ein Objekt mit Benutzerinformationen oder einer Verifizierungs-ID zurückzugeben, die ich zur Überprüfung des SMS-Codes verwenden kann. Zusammengefasst: LASSEN SIE EIN EREIGNIS AUFTRETEN.
Tatsächliches Verhalten
Beim Ausführen dieses Codes auf einem iOS-Gerät, der Xcode-Konsole protokolliert Folgendes:
Code: Select all
⚡️ [log] - Attempting to sign in with phone number: +573218116768
⚡️ To Native -> FirebaseAuthentication signInWithPhoneNumber 110818811
⚡️ TO JS undefined
⚡️ [log] - Sign-in successful
Code: Select all
TO JS
Zusätzliche Details
Firebase-Konfiguration:
- Die Telefonauthentifizierung ist in der Firebase-Konsole aktiviert.
- Die Datei GoogleService-Info.plist ist ordnungsgemäß konfiguriert und
mit dem Projekt synchronisiert. - Testtelefonnummern sind in Firebase konfiguriert, um das Senden echter Telefonnummern zu vermeiden.
SMS-Nachrichten.
- Ionic: 8.x
Winkel: ^18.x - @capacitor-firebase/authentication: ^6.3.1
- Capacitor: 6.x
- Die Firebase-Konfiguration ist korrekt (mit Ausnahme der APNs, die ich nicht überprüft habeEingerichtet, weil ich weiß, dass es für das Telefon nicht erforderlich ist anmelden).
- Die Telefonnummer ist im internationalen Format.
- Kondensator-Plugins sind korrekt installiert und synchronisiert.
- Was könnte dazu führen, dass signInWithPhoneNumber keine generiert Ereignis und Firebase sendet keinen SMS-Code?
- Müssen APNs-Zertifikate konfiguriert werden, damit signInWithPhoneNumber unter iOS funktioniert, auch wenn ich Ich verwende nur die Telefonauthentifizierung?