【问题标题】:Firebase UI: updateCurrentUser failed: First argument "user" must be an instance of Firebase User or nullFirebase UI:updateCurrentUser 失败:第一个参数“user”必须是 Firebase User 的实例或 null
【发布时间】:2021-10-02 19:21:26
【问题描述】:

我最近更新到 firebase 8,以及相关的部门,包括 firebaseui 4.8.1(我尝试了几个版本,他们都给我这个错误)。它加载了一个登录框,但是在尝试输入凭据或创建新用户时,出现此错误:

updateCurrentUser 失败:第一个参数“user”必须是 Firebase User 的实例或 null。

如何恢复身份验证功能?

firebase.js

import firebase from 'firebase/firebase';
import '@firebase/firestore';
import { FIREBASE_CONFIG } from '../keys';

const config = FIREBASE_CONFIG;

export const firebaseApp = firebase.initializeApp(config);
export const db = firebaseApp.firestore();

/store/index.js(略)

import firebase from 'firebase/firebase';
import * as firebaseui from 'firebaseui';
import '@firebase/firestore';

// This is our firebaseui configuration object
const uiConfig = ({
    signInSuccessUrl: '',
    signInOptions: [
        firebase.auth.EmailAuthProvider.PROVIDER_ID,
    ],
    callbacks: {
        signInSuccessWithAuthResult: authResult => {
            store.dispatch(login(authResult));
        },
    },
});

// This sets up firebaseui
const ui = new firebaseui.auth.AuthUI(firebase.auth());

// This adds firebaseui to the page
export const startFirebaseUI = elementId => {
    ui.start(elementId, uiConfig);
};

package.json

    "firebase": "^8.8.0"
    "firebaseui": "^4.8.1",

我已经尝试了这些讨论中建议的解决方案,但它们对我不起作用。 https://github.com/firebase/firebaseui-web/issues/536 https://github.com/firebase/firebaseui-web/issues/776

我也在控制台中看到了一个有效的身份验证响应。这是verifyPassword 的回复:

{
  "kind": "identitytoolkit#VerifyPasswordResponse",
  "localId": "VgZWszYv8cYDJLQsIr3YzwcZJ4s1",
  "email": "user@gmail.com",
  "displayName": "My User",
  "idToken": "<<a_long_token>>",
  "registered": true,
  "refreshToken": "<<another_token>>",
  "expiresIn": "3600"
}

这是 getAccountInfo 响应:

{
  "kind": "identitytoolkit#GetAccountInfoResponse",
  "users": [
    {
      "localId": "VgZWszYv8cYDJLQsIr3YzwcZJ4s1",
      "email": "user@gmail.com",
      "displayName": "Me",
      "passwordHash": "<<a hash>>",
      "emailVerified": false,
      "passwordUpdatedAt": 1561313504412,
      "providerUserInfo": [
        {
          "providerId": "password",
          "displayName": "Me",
          "federatedId": "user@gmail.com",
          "email": "user@gmail.com",
          "rawId": "user@gmail.com"
        }
      ],
      "validSince": "1561313504",
      "lastLoginAt": "1627418219738",
      "createdAt": "1561313504412",
      "lastRefreshAt": "2021-07-27T20:36:59.738Z"
    }
  ]
}

【问题讨论】:

    标签: javascript firebase-authentication firebaseui


    【解决方案1】:

    此软件包与 Firebase 8 不兼容。转储它并使用本机代码。此处建议:https://gist.github.com/CodingDoug/c0f782ad2e7e91933f8b5ffc53af55ad

    【讨论】:

      【解决方案2】:

      试试this

      这个解决方法是在项目的packages.json 中列出firebaseui:

      "dependencies": {
          "firebaseui": "file:../../../firebaseui-web",
      }
      

      然后从 firebaseui 的 node_modules 目录导入 firebase 模块:

      import firebase from "firebaseui/node_modules/firebase/app";
      import "firebaseui/node_modules/firebase/functions";
      import * as firebaseui from "firebaseui";
      import "firebaseui/dist/firebaseui.css";
      

      【讨论】:

        猜你喜欢
        • 2023-03-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-04-01
        • 2021-05-16
        • 2015-01-05
        相关资源
        最近更新 更多