MongoDB Stitch 中的身份验证服务 Webhook(端点)

Authentication Service Webhook (endpoint) in MongoDB Stitch

有没有办法创建服务 webhook 以使用电子邮件和密码注册新用户?

我可以通过 SDK 查看方法,但我正尝试通过服务 webhook 函数来做同样的事情?

例如

exports = function(payload) {

 const { Stitch, AnonymousCredential } = require('mongodb-stitch-server-sdk');

  var queryArg = payload.query || '';
  var body = {};

  if (payload.body) {
  body = EJSON.parse(payload.body.text());
  }

  return body.email;
};

我无法在此处访问 mongodb-stitch-server-sdk。我的方向对吗?

因此您将无法在 webhook 中使用 SDK。您可以通过点击 Stitch Admin API.

添加用户
  1. 在 Atlas 中创建一个 API 键。转到右上角的用户下拉列表 > 帐户 > Public API 访问权限。单击 "Generate",并保存创建的 API 密钥。

  2. 在 Stitch 中创建一个 HTTP 服务。

  3. 在您的 webhook 中,使用 Admin API 进行身份验证并创建新用户。代码将类似于:

    exports = function(payload) {
        const http = context.services.get("http");
        return http.post({
            url: "https://stitch.mongodb.com/api/admin/v3.0/auth/providers/mongodb-cloud/login",
            body: JSON.stringify({ 
                username: "<atlas-username>",
                apiKey: "<atlas-apiKey>"
            })
        }).then(response => EJSON.parse(response.body.text()).access_token).then(accessToken => {
            return http.post({
                url: "https://stitch.mongodb.com/api/admin/v3.0/groups/<groupId>/apps/<appId>/users",
                headers: {
                    Authorization: ["Bearer " + accessToken]
                },
                body: JSON.stringify({ 
                    email: "<email-from-payload>",
                    password: "<password-from-payload>"
                })
            });
        });
    };
    

评论后:

const http = context.services.get("http"); 需要配置为 ServiceName 而不是 http 作为 const http = context.services.get("<SERVICE_NAME>");