将 Clerk SVIX Webhook 连接到 Firebase HTTPS 云功能

问题描述 投票:0回答:1

场景:您有一个使用 clerk 进行身份验证的 NExtJS 项目。您希望通过 google 云功能和 Clerk Webhooks 将其连接到 Firebase,以进行正确的用户管理。你是怎么做到的。

SVIX 在记录其 API 方面做得非常出色,但由于某种原因,它没有记录失败原因的错误。因此,作为一名开发人员,您需要进行大量的试验和错误,直到以某种方式使其发挥作用。

经过大量的试验和错误,我终于成功地让 SVIX Webhooks 在 NodeJS Typescript Firebase Cloud 功能中工作。 我不想让任何人经历这一切。

firebase next.js firebase-authentication google-cloud-functions clerk
1个回答
0
投票

这是代码。我假设您已经在 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;
    }
}
});

快乐编码。

© www.soinside.com 2019 - 2024. All rights reserved.