2017-12-16 35 views
0

Ich versuche, eine vergessene Passwort-Taste in meiner App mit Firebase zu erstellen, aber es funktioniert nur, wenn ich die E-Mail schreibe, für die ich das Passwort im Code ändern möchte, das ist die " schlechte "Codezeile.Passwort vergessen Taste Firebase iOS

Auth.auth().sendPasswordReset(withEmail: "[email protected]" 

Was soll ich tun, um das Passwort eines Kontos zu ändern, ohne die E-Mail im Code zu schreiben? Das Problem ist, dass ein registrierter Benutzer sein Passwort nicht zurücksetzen kann, wenn ich seine E-Mail nicht in der Code-Adresse schreiben, es funktioniert nur für die angegebene E-Mail-Adresse Im Anschluss gibt den vollständigen Code

@IBAction func resetPasswordTapped(_ sender: UIButton) { 
    var loginTextField: UITextField? 
    let alertController = UIAlertController(title: "Password Recovery", message: "Please enter your email address", preferredStyle: .alert) 
    let ok = UIAlertAction(title: "OK", style: .default, handler: { (action) -> Void in 

     if loginTextField?.text != "" { 
      Auth.auth().sendPasswordReset(withEmail: ("[email protected]") { (error) in 
       if (error == nil) { 

        self.showErrorAlert(title: "Password reset", msg: "Check your inbox to reset your password") 

       } else { 
        print(error) 
        self.showErrorAlert(title: "Unidentified email address", msg: "Please re-enter the email you registered with") 
       } 
      } 
     } 
     print("textfield is empty") 

    }) 
    let cancel = UIAlertAction(title: "Cancel", style: .cancel) { (action) -> Void in 

    } 
    alertController.addAction(ok) 
    alertController.addAction(cancel) 
    alertController.addTextField { (textField) -> Void in 
     // Enter the textfiled customization code here. 
     loginTextField = textField 
     loginTextField?.placeholder = "Enter your login ID" 
    } 
    present(alertController, animated: true, completion: nil) 

} 


func showErrorAlert(title: String, msg: String) { 
    let alert = UIAlertController(title: title, message: msg, preferredStyle: .alert) 
    let action = UIAlertAction(title: "OK", style: .default, handler: nil) 
    alert.addAction(action) 
    present(alert, animated: true, completion: nil)} 
+0

Es ist ein wenig unklar, was Sie fordern; sagen Sie, dass, wenn Sie die E-Mail-Adresse Zeichenfolge in Ihrem Code enthalten, es funktioniert, aber Sie nicht wissen, um die E-Mail sonst zu erhalten? – Jay

+0

das Problem ist, dass ein registrierter Benutzer sein Passwort nicht zurücksetzen kann, wenn ich nicht seine E-Mail-Adresse in den Code schreiben –

+0

Ich denke, das ist per Entwurf, sendet Firebase Passwort zurückgesetzt durch E-Mails, weil ich den Benutzer signedUpWithEmailAndPassword() annehmen . Fragen Sie, wie Sie einem Benutzer erlauben, sein Passwort sofort in der App zurückzusetzen? –

Antwort

0

Wie bereits erwähnt ist in die Kommentare, deine Frage ist ein wenig unklar. Sie müssen eine E-Mail senden, um eine E-Mail zum Zurücksetzen des Kennworts zu senden. Sie können nichts anderes verwenden, es sei denn, Sie schreiben strikt Funktionen, um nach dem Benutzernamen/user/userId zu suchen, um die E-Mail zu finden. Was wäre ein bisschen unnötig.

Heres ein Beispiel habe ich in meiner App

{this.state.showPasswordReset ? <div> 
       <p>Input the email you signed up with, and we will email you directions to reset your password.</p> 
       <form > 
        <TextField 
         hintText="email" 
         floatingLabelText="email" 
         multiLine={false} 
         rows={1} 
         name='email' 
         type='text' 
         value={this.state.email} 
         onChange={(email) => this.setState({ email })} 
        /> 
       </form> 
       <RaisedButton label='Send Password Reset Email' onClick={this.sendPasswordResetEmail.bind(this)} primary={true} type='submit' /> 
       {/* <Button style={{ backgroundColor: '#757575', margin: 5 }} block onPress={this.sendPasswordResetEmail.bind(this)}>Send Password Reset Email</Button> */} 
      </div> 
       : <div> 
        <p>Forgot your password? Reset it <p style={{ color: 'red', textDecorationLine: "underline", }} onClick={() => this.setState({ showPasswordReset: !this.state.showPasswordReset })}>here</p></p> 
       </div>} 
Verwandte Themen