网站搜索

使用 Facebook 身份验证登录时的 Typescript 编译器错误


使用 Facebook 认证登录时的 Typescript 编译器错误。

Facebook 身份验证工作正常。只是 TypeScript 编译器不喜欢这个响应。

TypeScript 编译器错误是:"属性 'facebook' 在类型 FirebaseAuthData 上不存在"。

这是我的代码:

 public loginWithFacebook():void{       
         this.ref.authWithOAuthPopup("facebook", function(error, authData?)          {
      if (error) {
        console.log("Login Failed!", error);
      } else {         

            //Error here - Doesnt like authData.facebook.
            let user = {
              email    : authData.facebook.email,
              password : null,
              uid: authData.uid
            }       

            this.addUser(user);
      }
    });
}

在 authData.facebook.email 的响应中似乎出现了错误。这段代码运行正常,没有问题。但 TypeScript 编译器不行。

我需要访问 authData.facebook 来获取电子邮件字段,但 TypeScript 似乎对 facebook 是什么感到困惑。

答案#1

所以问题在于主要的 firebase.d.ts 文件已经过时。它的版本是 2.0.2。需要进行修正(我可能会提交一个 PR)。

但现在你可以将此添加到 firebase.d.ts 文件中以继续操作。

interface FirebaseAuthData {
    uid: string;
    provider: string;
    token: string;
    expires: number;
    auth: Object;
    google?: FirebaseAuthDataProvider;
    facebook?: FirebaseAuthDataProvider;
}

interface FirebaseAuthDataProvider {
    accessToken: string;
    cachedUserProfile: any;
    displayName: string;
    email?: string;
    id: string;
    profileImageURL: string;
}

这将更新接口,以便编译能够正常工作。