Firebase UI:updateCurrentUser 失败:第一个参数 "user" 必须是 Firebase User 的实例或 null
Firebase UI: updateCurrentUser failed: First argument "user" must be an instance of Firebase User or null
我最近更新到firebase 8,相关的deps包括firebaseui 4.8.1(我试过几个版本,他们都给我这个错误)。它加载了一个登录框,但是在尝试输入凭据或创建新用户时,出现此错误:
updateCurrentUser failed: First argument "user" must be an instance of Firebase User or 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"
}
]
}
尝试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";
此包与 Firebase 8 不兼容。转储它并使用本机代码。此处建议:https://gist.github.com/CodingDoug/c0f782ad2e7e91933f8b5ffc53af55ad
我最近更新到firebase 8,相关的deps包括firebaseui 4.8.1(我试过几个版本,他们都给我这个错误)。它加载了一个登录框,但是在尝试输入凭据或创建新用户时,出现此错误:
updateCurrentUser failed: First argument "user" must be an instance of Firebase User or 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"
}
]
}
尝试this
此解决方法是在项目的 packages.json
:
"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";
此包与 Firebase 8 不兼容。转储它并使用本机代码。此处建议:https://gist.github.com/CodingDoug/c0f782ad2e7e91933f8b5ffc53af55ad