首页 文章

AngularFire2身份验证错误:第一个参数“email”必须是有效的字符串

提问于
浏览
1

我正在尝试使用angularFire2和Firebase为我的网络应用程序制作登录和注册表单 .

我在获取用户注册信息并将其传递到signInWithEmailAndPassword函数时收到错误 .

signInWithEmailAndPassword failed: First argument "email" must be a valid string.

我的组件中的所有内容都处理了作为字符串输入的电子邮件变量,它以字符串形式登录到控制台,所以我不确定究竟发生了什么 .

我已经研究了近3个小时,无法找到任何可以解决问题的方法 .

模板:

<form action="" class="login">
   <input type="email" name="loginEmail" id="loginEmail" placeholder="email" [(ngModel)]="signInEmail">
   <input type="password" name="loginPassword" id="loginPassword" placeholder="password" [(ngModel)]="signInPassword">
    <a href="#">Forgot Password?</a>
    <button type="submit" (click)="login(signInEmail, signInPassword)">Sign In</button>
</form>

零件:

// Sign In
  signInEmail: string;
  signInPassword: string;

  constructor(private _songsService: SongService, private _router: Router, public af: AngularFire) {
    this.backgroundImage = '../images/main-bg.jpg';
    this.logoIcon = '../images/logo-icon.png';
  }

  login(email, password) {
    console.log('login');
    this.af.auth.login( email, password );
  }

NgModule

const firebaseAuthConfig = {
  provider: AuthProviders.Password,
  method: AuthMethods.Password
}

@NgModule({
  imports: [
    BrowserModule,
    routing,
    HttpModule,
    JsonpModule,
    FormsModule,
    AngularFireModule.initializeApp(firebaseConfig, firebaseAuthConfig)

1 回答

  • 2

    af.auth.login() 的签名是一个具有两个属性的对象:

    // Email and password
    af.auth.login({
      email: 'email@example.com',
      password: 'password',
    },
    {
      provider: AuthProviders.Password,
      method: AuthMethods.Password,
    })
    

    https://github.com/angular/angularfire2/blob/master/docs/5-user-authentication.md

    ...如果您使用的是用户名和密码,那么您必须使用用户的凭据调用af.auth.login() . af.auth.login({email:'email',密码:'pass'});

相关问题