要解决“被未经认证的终端用户调用的Firebase HTTPS可调用函数”的问题,您可以按照以下步骤进行操作:
context.auth
属性来检查调用者的身份验证状态。如果用户未经身份验证,则该属性将为null
。exports.myFunction = functions.https.onCall((data, context) => {
if (!context.auth) {
// 处理未经身份验证的调用
return {
error: 'Unauthorized',
message: 'This function can only be accessed by authenticated users.'
};
}
// 处理经过身份验证的调用
// ...
return {
message: 'Success'
};
});
在上面的示例中,如果调用者未经身份验证,则函数将返回一个包含错误消息的对象。否则,如果调用者已进行身份验证,则函数将执行其他操作并返回一个成功的消息。
firebase.auth().signInWithEmailAndPassword(email, password)
.then((userCredential) => {
// 用户已登录,获取身份验证令牌
return userCredential.user.getIdToken();
})
.then((token) => {
// 调用可调用函数并传递身份验证令牌
return firebase.functions().httpsCallable('myFunction')({ data: 'example' }, { token });
})
.then((result) => {
// 处理函数调用结果
console.log(result.data);
})
.catch((error) => {
// 处理错误
console.error(error);
});
在上面的示例中,通过使用signInWithEmailAndPassword
方法进行用户登录,然后使用getIdToken
方法获取身份验证令牌。最后,通过使用httpsCallable
方法调用可调用函数并将身份验证令牌作为第二个参数传递给该函数。
通过按照以上步骤,您可以在Firebase可调用函数中处理未经认证的终端用户调用,并在前端应用程序中进行身份验证来确保只有经过认证的用户可以调用该函数。