PassportJS身份验证注册后如何将该用户注册到mailchimp列表



早上好,我正试图从发布到我的Mongo数据库的注册表单中获取用户信息,然后将用户注册到Mailchimp。我目前使用的代码是:

require("dotenv").config();
const express     =   require("express"),
expressSanitizer=   require("express-sanitizer"),
router      =   express.Router(),
passport    =   require("passport"),
User        =   require("../models/user"),
middleware  =   require("../middleware"),
superagent  = require('superagent'),
mailchimp   = require('@mailchimp/mailchimp_marketing'),
request     = require('request'),
https       = require('https');
//REGISTER USER
router.post("/register", function (req, res){
var newUser = {
firstName:  req.sanitize(req.body.firstName),
lastName:   req.sanitize(req.body.lastName),
email:      req.sanitize(req.body.email),
username:   req.sanitize(req.body.username)
};
User.register(newUser, req.body.password, function(err,user){
if(err){
// DISPLAYS PASSPORT ERROR
console.log(err);
return res.render("/login");
}
passport.authenticate("local")(req, res, function(){
console.log(user);
res.redirect("/insider/resources");
});
});
// Mailchimp Logic
const firstName = req.sanitize(req.body.firstName);
const lastName = req.sanitize(req.body.lastName);
const email = req.sanitize(req.body.email);

var data = {
members:[ {
email_address: email,
status: "subscribed",
merge_fields: {
FNAME: firstName,
LNAME: lastName
}
}]
};

var jsondata = JSON.stringify(data);
const url = `https://us3.api.mailchimp.com/3.0/lists/`+process.env.MAILCHIMPLIST; 

const options = {
method: "POST",
body: data,
auth: process.env.MAILCHIMP
};
const request = https.request(url, options, function(response){
response.on("data", function (data) {
console.log(JSON.parse(data));
});
if(response.statusCode === 200){
res.render("/insider/resources");
} else {
res.render("landing");
}
});
request.write(jsondata);
request.end();
});

在这个示例中,process.env.MAILCHIMP是我存储的API,process.env.MAILCCHIMPLIST是我想要将用户放入的受众。

A这一点我知道用户已经注册,因为我的console.log((显示了在Mongo中注册的用户。在这之后,我从Mailchimp的API得到了这个错误:

{
type: 'https://mailchimp.com/developer/marketing/docs/errors/',
title: 'API Key Invalid',
status: 401,
detail: "Your API key may be invalid, or you've attempted to access the wrong datacenter.",
instance: '40471ba2-403c-9846-ef76-f3cb6b39087f'
}

如果有人能帮我找出我犯的错误,我将不胜感激

在查看了我的代码后,我意识到我没有安装两个依赖项,感谢任何试图提供帮助的人,但使其工作的确切代码是:

// REQUIREMENTS
require("dotenv").config();
const express     =   require("express"),
expressSanitizer=   require("express-sanitizer"),
router      =   express.Router(),
passport    =   require("passport"),
User        =   require("../models/user"),
mailchimp   = require('@mailchimp/mailchimp_marketing'),
request     = require('request'),
https       = require('https');

// Mailchimp Logic in your route
let firstName = req.sanitize(req.body.firstName);
let lastName = req.sanitize(req.body.lastName);
let email = req.sanitize(req.body.email);

var data = {
members:[ {
email_address: email,
status: "subscribed",
merge_fields: {
FNAME: firstName,
LNAME: lastName
}
}]
};

var jsonData = JSON.stringify(data);
const url = 'https://us3.api.mailchimp.com/3.0/lists/'+process.env.MAILCHIMPLIST; 

const options = {
method: "POST",
auth: "archit:"+process.env.MAILCHIMPAPI,
};
const request =  https.request(url, options, (response) => {
response.on("data", (data) => {
console.log(JSON.parse(data));
});
});
request.write(jsonData);
request.end();

最新更新