场景:您有一个使用 clerk 进行身份验证的 NExtJS 项目。您希望通过 google 云功能和 Clerk Webhooks 将其连接到 Firebase,以进行正确的用户管理。你是怎么做到的。
SVIX 在记录其 API 方面做得非常出色,但由于某种原因,它没有记录失败原因的错误。因此,作为一名开发人员,您需要进行大量的试验和错误,直到以某种方式使其发挥作用。
经过大量的试验和错误,我终于成功地让 SVIX Webhooks 在 NodeJS Typescript Firebase Cloud 功能中工作。 我不想让任何人经历这一切。
这是代码。我假设您已经在 Clerk Dashboard 中设置了 webhook
export const yourWebhookName = functions.https.onRequest((req, res) => {
const wh = new Webhook(clerkSigningSecret);
var msg;
var payload = JSON.stringify(req.body);
var moddedHeaders = req.headers as WebhookRequiredHeaders | WebhookUnbrandedRequiredHeaders | Record<string, string>
console.log(`Here is svix id: ${svixID} and here is timestamp: ${svixTimestamp} and here is signature: ${svixSignature} and here is payload: ${payload}`);
try {
msg = wh.verify(payload, moddedHeaders);
} catch (err) {
console.log("It seems MSG is baaddd. Here's the error", JSON.stringify(err));
res.status(400).json({});
return;
}
console.log("It seems MSG is good and this is msg", JSON.stringify(msg));
var event = req.body.type;
if (event == "user.created") {
console.log("New user");
res.status(200).json({});
return;
} else {
if (event == "user.updated") {
console.log("Updated user");
res.status(200).json({});
return;
} else {
console.log("Deleted user");
res.status(200).json({});
return;
}
}
});
快乐编码。