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.
添加用户
在 Atlas 中创建一个 API 键。转到右上角的用户下拉列表 > 帐户 > Public API 访问权限。单击 "Generate",并保存创建的 API 密钥。
在 Stitch 中创建一个 HTTP 服务。
在您的 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>");
有没有办法创建服务 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.
添加用户在 Atlas 中创建一个 API 键。转到右上角的用户下拉列表 > 帐户 > Public API 访问权限。单击 "Generate",并保存创建的 API 密钥。
在 Stitch 中创建一个 HTTP 服务。
在您的 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>");