Ceci est mon code:
import FirebaseAuth
class AuthPhoneNum {
static func getPhoneNum(phoneNumber: String) {
PhoneAuthProvider.provider().verifyPhoneNumber(phoneNumber) { (verificationID, error) in
if let error = error {
print(error)
return
}
UserDefaults.standard.set(verificationID, forKey: "authVerificationID")
}
}
static func verify(verificationCode: String?) {
guard let verificationID = UserDefaults.standard.string(forKey: "authVerificationID") else { return }
if verificationCode != nil {
let credential = PhoneAuthProvider.provider().credential(
withVerificationID: verificationID,
verificationCode: verificationCode!)
Auth.auth().signIn(with: credential) { (user, error) in
if let error = error {
print(error)
return
}
}
} else {
print("No verification code")
}
}
}
Voici ce que la console affiche:
Domaine d'erreur = Code FIRAuthErrorDomain = 17048 "Jeton incorrect." UserInfo = {NSLocalizedDescription = Jeton invalide., nom_erreur = INVALID_APP_CREDENTIAL}
Qu'est-ce que je fais mal? Merci
Je rencontrais aussi ce problème. Vérifié ce qui suit:
aps-environment
auth.setAPNStoken
(.unknown
pour la détection automatique)Rien ne m'a aidé jusqu'à ce que, dans les paramètres de l'application Firebase, je _ {j'ai chargé la clé d'authentification APNS (p8) au lieu de certificats} - j’avais déjà utilisé ces certificats pour les notifications Push et que tout fonctionnait bien, mais que les notifications de numéro de téléphone se passaient mal.
Régénère d’abord la clé APNS et l’envoie dans Firebase pour la messagerie en nuage
1) Importer Firebase et FirebaseAuth
import Firebase
import FirebaseAuth
2) Dans didFinishLaunchingWithOptions Configurez firebase.
FirebaseApp.configure()
3) Écrivez ces deux fonctions dans AppDelegate.
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
let firebaseAuth = Auth.auth()
firebaseAuth.setAPNSToken(deviceToken, type: AuthAPNSTokenType.prod)
}
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
let firebaseAuth = Auth.auth()
if (firebaseAuth.canHandleNotification(userInfo)){
print(userInfo)
return
}
}
Remarque très importante: uthAPNSTokenType
défini correctement pour [sandbox/production] ou défini pour .unknown
commun
Dans mon cas, c'était le type de jeton apns qui était incorrect:
Auth.auth().setAPNSToken(deviceToken, type: AuthAPNSTokenType.prod)
aurait du être:
Auth.auth().setAPNSToken(deviceToken, type: AuthAPNSTokenType.sandbox)
les mêmes problèmes ont déjà été posés sur SO. aimerait donc vous dire de configurer toutes les étapes préalables au code d’exécution.
Étapes préalables:
Enregistrez l'ID de l'ensemble sur le compte développeur et activez les notifications pour l'ID de l'ensemble
Enregistrez le même identifiant de paquet sur la page de paramétrage de la console Firebase et créezapp, téléchargez le fichier Google-Info.plist et assurez-vous que le nom est identique.
Téléchargez les certificats Push sur la console Firebase pour le bac à sable et le développement
suivez ce lien ci-dessous pour l'implémentation du code.
Il est fort probable que vous ayez besoin de télécharger un fichier de clé .p8 (J'ai un compte d'entreprise mais la même chose pour le développeur)
Dans le compte développeur Apple: