我正在使用Firebase和Firebase云功能。
使用auth
创建用户时,我想根据其电子邮件设置自定义声明。我正在尝试使用functions.auth.user().onCreate(....)
实现这一目标。
但是,当我尝试添加自定义声明时,在控制台中出现以下错误:There is no user record corresponding to the provided identifier
。
我在网上尝试了许多示例,例如Google's docs中的示例。 我还尝试过在添加自定义声明之前手动创建用户,如下所示:
await auth().createUser({...user});
export const signupProcess = functions.auth.user().onCreate(async (user) => {
// Check if user meets role criteria.
const admin = (user.email && admins.has(user.email)? true: false);
const customClaims = { admin };
// Set custom user claims on this newly created user.
return auth().setCustomUserClaims(user.uid, customClaims)
.catch(error => {
console.log(error);
});
});
我希望可以使用正确的电子邮件访问管理员。 但是,我在创建用户时遇到了所描述的错误。
答案 0 :(得分:1)
我尝试了简单的代码。
我可以设置自定义用户声明。
import * as functions from "firebase-functions";
import * as admin from "firebase-admin";
admin.initializeApp();
export const setCustomUserClaimsAdmin = functions.auth.user().onCreate(
async (user: functions.auth.UserRecord): Promise<any> => {
try {
return admin.auth().setCustomUserClaims(user.uid, {
...user.customClaims,
...{ admin: true }
});
} catch (e) {
console.error(e);
return Promise.reject(e);
}
}
);
请参见https://github.com/zkohi/firebase-web-samples/tree/microsoft-oauth/functions。
您可以尝试简单的代码还是更多地插入调试代码?