【发布时间】:2022-01-23 13:59:58
【问题描述】:
我已经实现了一个 HTTP 可调用函数来获取所有用户。正如您在我的代码中看到的,问题在于requestedPageToken(来自客户端调用)与listUsersResult.pageToken(从listusers 函数返回)相同。我的客户端应用程序一遍又一遍地使用相同的令牌调用此函数,但它只获取用户的第一页,因为listUsersResult 返回相同的令牌而不是下一页令牌。这是我的 TypeScript 代码:
export const listAllUsers = functions.https.onCall((data, context) => {
try {
if (data !== null) {
const requestedPageToken = data.text;
console.log("PageToken is: " + data);
return admin.auth().listUsers(50, requestedPageToken)
.then((listUsersResult) => {
console.log("New PageToken is: " + listUsersResult.pageToken);
return listUsersResult;
}).catch((reason) => {
return Promise.reject(
new Error(reason));
});
} else {
return admin.auth().listUsers(50);
}
} catch (error) {
console.error("Error: " + error);
return Promise.reject(error);
}
});
我找不到问题出在哪里。为什么我没有获得下 50 个用户的令牌?
【问题讨论】:
-
您的日志信息打印正确吗?
-
是的,这是这两条日志消息的日志输出:
PageToken is: 2Sq0O25MHMgXdcQMz5M0...,这是另一条New PageToken is: 2Sq0O25MHMgXdcQMz5M0... -
Sweet,所以问题正是我想的那样:
data是一个字符串,data.text将返回undefined(因为字符串没有 text 属性),这意味着您有效地调用admin.auth().listUsers(50, undefined)与admin.auth().listUsers(50)相同 - 所以没有令牌,结果相同。
标签: node.js firebase-authentication google-cloud-functions firebase-admin