gpt4 book ai didi

javascript - Firebase 管理员,导入用户不起作用

转载 作者:太空宇宙 更新时间:2023-11-03 22:20:24 27 4
gpt4 key购买 nike

我的问题是:当用户在应用程序中更改电子邮件时,需要更改初始电子邮件(注册时的电子邮件)。 Firebase 支持建议我使用 Admin SDK:getUser(uid)importUsers(UserRecord)。我做到了,但是 importUsers(UserRecord) 对我不起作用。我的代码位于 index.js 文件:

获取用户数据:

 admin.auth().getUser("DRDYMZLfg2MkKm5JklYWc9LmlOo2")
.then(function(userRecord) {
// See the UserRecord reference doc for the contents of userRecord.
console.log('Successfully fetched user data:', userRecord.toJSON());
})
.catch(function(error) {
console.log('Error fetching user data:', error);
});

导入用户:

 let userImportRecords = [
{
uid: 'DRDYMZLfg2MkKm5JklYWc9LmlOo2',
email: 'test11@mywaves.mobi',
emailVerified: false,
displayName: undefined,
photoURL: undefined,
phoneNumber: undefined,
disabled: false,
metadata:
{ lastSignInTime: 'Wed, 19 Jun 2019 03:42:38 GMT',
creationTime: 'Wed, 19 Jun 2019 03:40:01 GMT' },
passwordHash: 'UkVEQUNURUQ=',
passwordSalt: undefined,
customClaims: undefined,
tokensValidAfterTime: 'Wed, 19 Jun 2019 03:42:40 GMT',
providerData:
[ { uid: 'test11@mywaves.mobi',
displayName: undefined,
email: 'test11@mywaves.mobi',
photoURL: undefined,
providerId: 'password',
phoneNumber: undefined } ]
},
//...
];



admin.auth().importUsers(userImportRecords)
.then(function(userImportResult) {
console.log(userImportResult);
// The number of successful imports is determined via: userImportResult.successCount.
// The number of failed imports is determined via: userImportResult.failureCount.
// To get the error details.
userImportResult.forEach(function(indexedError) {
// The corresponding user that failed to upload.
console.log(userImportRecords[indexedError.index].uid +' failed to import',
indexedError.error);
});
})
.catch(function(error) {
// Some unrecoverable error occurred that prevented the operation from running.
});

在终端我有

{ successCount: 0,
failureCount: 1,
errors: [ { index: 0, error: [FirebaseAuthError] } ] }

如何解决FirebaseAuthError?

UPD:错误是

{ Error: The password hash must be a valid byte buffer.
at FirebaseAuthError.FirebaseError [as constructor] (/Users/xxx/node_modules/firebase-admin/lib/utils/error.js:42:28)
at FirebaseAuthError.PrefixedFirebaseError [as constructor] (/Users/xxx/node_modules/firebase-admin/lib/utils/error.js:88:28)
at new FirebaseAuthError (/Users/xxx/node_modules/firebase-admin/lib/utils/error.js:146:16)
at populateUploadAccountUser (/Users/xxx/node_modules/firebase-admin/lib/auth/user-import-builder.js:55:19)
at /Users/xxx/node_modules/firebase-admin/lib/auth/user-import-builder.js:295:30
at Array.forEach (<anonymous>)
at UserImportBuilder.populateUsers (/Users/xxx/node_modules/firebase-admin/lib/auth/user-import-builder.js:293:15)
at new UserImportBuilder (/Users/xxx/node_modules/firebase-admin/lib/auth/user-import-builder.js:121:36)
at FirebaseAuthRequestHandler.uploadAccount (/Users/xxx/node_modules/firebase-admin/lib/auth/auth-api-request.js:557:33)
at Auth.BaseAuth.importUsers (/Users/xxx/node_modules/firebase-admin/lib/auth/auth.js:281:40) errorInfo: { code: 'auth/invalid-password-hash',
message: 'The password hash must be a valid byte buffer.' }, codePrefix: 'auth' }

最佳答案

尽管文档指出 passwordHash 应该是一个缓冲区,但 SDK 接受字符串而不是缓冲区。(https://firebase.google.com/docs/auth/admin/import-users)

我使用的是这种格式,如文档中所示:

{
uid: 'uid1',
email: 'user1@example.com',
passwordHash: Buffer.from('passwordHash1'),
passwordSalt: Buffer.from('salt1')
}

并且仍然收到无效字节缓冲区错误:

Error creating new user: { Error: The password hash must be a valid byte buffer.
at FirebaseAuthError.FirebaseError [as constructor] (xxxx/node_modules/firebase-admin/lib/utils/error.js:42:28)
at FirebaseAuthError.PrefixedFirebaseError [as constructor] (xxxx/node_modules/firebase-admin/lib/utils/error.js:88:28)
at new FirebaseAuthError (xxxx/node_modules/firebase-admin/lib/utils/error.js:147:16)
at validateCreateEditRequest (xxxx/node_modules/firebase-admin/lib/auth/auth-api-request.js:430:15)
at xxxx/node_modules/firebase-admin/lib/auth/auth-api-request.js:601:5
at xxxx/node_modules/firebase-admin/lib/auth/auth-api-request.js:1462:13

如果您转到/node_modules/firebase-admin/lib/auth/auth-api-request.js:430:15,您将找到以下代码:

    // passwordHash has to be a base64 encoded string.
if (typeof request.passwordHash !== 'undefined' &&
!validator.isString(request.passwordHash)) {
throw new error_1.FirebaseAuthError(error_1.AuthClientErrorCode.INVALID_PASSWORD_HASH);
}

但错误消息尚未更改:

    AuthClientErrorCode.INVALID_PASSWORD_HASH = {
code: 'invalid-password-hash',
message: 'The password hash must be a valid byte buffer.',
};

关于javascript - Firebase 管理员,导入用户不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56680087/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com