问题描述
我正在尝试使用管理 API 从 firebase 函数中检索用户。
完成工作的代码是:
async function getUserByUid(uid: string) {
const user = await admin.auth().getUser(uid);
return mapUser(user);
}
在我的日志中,我可以看到 2 个获取用户的请求,一个有效,另一个无效。
工作
5:33:19.911 pm api 收到要求学生获取 uid 的请求
5:33:22.509 pm api 函数执行耗时 2604 毫秒,完成 状态码:304
不工作
11:47:08.849 pm api 收到要求学生获取 uid 的请求
11:47:10.983 pm api 发生错误 { 错误:没有与提供的用户记录相对应 标识符。 在 FirebaseAuthError.FirebaseError [作为构造函数] (/workspace/node_modules/firebase-admin/lib/utils/error.js:42:28) 在 FirebaseAuthError.PrefixedFirebaseError [作为构造函数] (/workspace/node_modules/firebase-admin/lib/utils/error.js:88:28) 在新的 FirebaseAuthError (/workspace/node_modules/firebase-admin/lib/utils/error.js:147:16) 在 /workspace/node_modules/firebase-admin/lib/auth/auth-api-request.js:518:15 在 /workspace/node_modules/firebase-admin/lib/auth/auth-api-request.js:1476:13 在 process._tickCallback (internal/process/next_tick.js:68:7) errorInfo: { code: 'auth/user-not-found',信息: '没有与提供的标识符对应的用户记录。' },codePrefix: 'auth' }
在这两种情况下,我都可以在 firbase 管理员的身份验证/用户部分找到用户。两者的 uid 绝对是正确的。两个用户都没有被禁用。
我的函数在 australia-southeast1 区域运行。 export const api = functions.region("australia-southeast1")
我不知道为什么相同的代码对某些用户有效,而对其他人却不起作用。
解决方法
事实证明,在我阅读了有问题的用户之后,我试图从他们的一名学生那里检索不存在的数据。谜底解开。