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

时间:2018-11-28 15:37:32

标签: mongodb webhooks es6-modules mongodb-stitch

有没有一种方法可以创建服务网络挂钩来使用电子邮件和密码注册新用户?

我可以通过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。我朝着正确的方向前进吗?

1 个答案:

答案 0 :(得分:1)

因此,您将无法在Webhook内使用SDK。您可以做的是通过点击Stitch Admin API添加用户。

  1. 在Atlas中创建API密钥。转到右上角的用户下拉菜单>帐户>公共API访问。单击“生成”,然后保存创建的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,而不是httpconst http = context.services.get("<SERVICE_NAME>");