使用Node.js时参数过长&;电子邮件审计API的HTTPS
我正在使用电子邮件审计API来监控我公司的电子邮件。不幸的是,我不能按照这里的说明上传我的公钥 在该示例中,我将使用google页面上给出的公钥(base64编码):使用Node.js时参数过长&;电子邮件审计API的HTTPS,node.js,rest,https,request,google-email-audit-api,Node.js,Rest,Https,Request,Google Email Audit Api,我正在使用电子邮件审计API来监控我公司的电子邮件。不幸的是,我不能按照这里的说明上传我的公钥 在该示例中,我将使用google页面上给出的公钥(base64编码): LS0tLS1CRUdJTiBQR1AgUFVCTElDIEtFWSBCTE9DSy0tLS0tDQpWZXJzaW9uOiBHbn VQRyB2MS40LjEwIChHTlUvTGludXgpDQoNCm1RRU5CRXJXYUQ0QkNBQ3QybmdmczYv K1FPR1lieE5iYzNnTG5YSHRxcDdOVFR
LS0tLS1CRUdJTiBQR1AgUFVCTElDIEtFWSBCTE9DSy0tLS0tDQpWZXJzaW9uOiBHbn
VQRyB2MS40LjEwIChHTlUvTGludXgpDQoNCm1RRU5CRXJXYUQ0QkNBQ3QybmdmczYv
K1FPR1lieE5iYzNnTG5YSHRxcDdOVFRYTlc0U0pvKy9BMW9VWm9HeEENClF4NnpGWG
hRLzhNWFc2Nis4U1RTMVlxTkpPQVJGdGpiSUtQd2pyZGN1a2RQellWS0dacmUwUmF4
Q25NeUNWKzYNCkY0WU5RRDFVZWdIVHUyd0NHUjF1aVlPZkx4VWE3L2RvNnMzMVdSVE
g4dmJ0aVBZOS82b2JFSXhEakR6S0lxWU8NCnJ2UkRXcUFMQllrbE9rSjNIYmdmeWw0
MkVzbkxpQWhTK2RNczJQQ0RpMlgwWkpDUFo4ZVRqTHNkQXRxVlpKK1INCldDMUozVU
R1RmZtY3BzRFlSdFVMOXc2WU10bGFwQys5bW1KM0FCRUJBQUcwVjBSaGMyaGxjaUJV
WlhOMElDaFUNCmRHVnlNa0JrWVhOb1pYSXRhSGxrTFhSbGMzUXVZMjl0UG9rQk9BUV
RBUUlBSWdVQ1N0Wm9QZ0liRFFZTENRZ0gNCmsxOVFja1Rwd0Jkc2tFWXVtRnZtV3Zl
NVVYMlNWVjdmek9DMG5adGdGeHRaR2xKaEdtanNBM3J4RlRsYitJcmENCldaYXlYQ1
dZaUN6ZDdtOXo1L0t5R0QyR0ZUSy85NG1kbTI1TjZHWGgvYjM1cElGWlhCSS9yWmpy
WXJoWVJCRnUNCkd0ekdGSXc5QUFuRnlVekVVVVZmUFdVdEJlNXlITVc1NEM2MG5Iaz
V4WUlhNnFGaGlMcDRQWXFaQ3JZWDFpSXMNCmZSUk9GQT09DQo9U1RIcg0KLS0tLS1F
TkQgUEdQIFBVQkxJQyBLRVkgQkxPQ0stLS0tLQ==
这是我的密码:
var params =
"<atom:entry xmlns:atom='http://www.w3.org/2005/Atom' xmlns:apps='http://schemas.google.com/apps/2006'>"+
"<apps:property name='publicKey' value='"+key+"'/>"+
"</atom:entry>";
// An object of options to indicate where to post to
var post_options = {
host: 'apps-apis.google.com',
path: '/a/feeds/compliance/audit/publickey/' + encodeURIComponent(domain),
method: 'POST',
headers: {
'Authorization': 'OAuth ' + token,
'Content-Type': 'application/atom+xml;charset=utf-8',
}
};
// Set up the request
var post_req = https.request(post_options, function(res) {
res.setEncoding('utf8');
res.on('data', function (chunk) {
console.log("REPONSE");
console.log("-------");
console.log(chunk);
});
});
// post the data
post_req.write(params);
post_req.end();
还是同样的问题:
REPONSE
-------
<?xml version="1.0" encoding="UTF-8"?>
<AppsForYourDomainErrors>
<error errorCode="1411" invalidInput="LS0tLS1CRUdJTiBQR1AgUFVCTElDIEtFWSBCTE9DSy0tLS0tDQpWZXJzaW9uOiBHbn VQRyB2MS40LjEwIChHTlUvTGludXgpDQoNCm1RRU5CRXJXYUQ0QkNBQ3QybmdmczYv K1FPR1lieE5iYzNnTG5YSHRxcDdOVFRYTlc0U0pvKy9BMW9VWm9HeEENClF4NnpGWG hRLzhNWFc2Nis4U1RTMVlxTkpPQVJGdGpiSUtQd2pyZGN1a2RQellWS0dacmUwUmF4 Q25NeUNWKzYNCkY0WU5RRDFVZWdIVHUyd0NHUjF1aVlPZkx4VWE3L2RvNnMzMVdSVE g4dmJ0aVBZOS82b2JFSXhEakR6S0lxWU8NCnJ2UkRXcUFMQllrbE9rSjNIYmdmeWw0 MkVzbkxpQWhTK2RNczJQQ0RpMlgwWkpDUFo4ZVRqTHNkQXRxVlpKK1INCldDMUozVU R1RmZtY3BzRFlSdFVMOXc2WU10bGFwQys5bW1KM0FCRUJBQUcwVjBSaGMyaGxjaUJV WlhOMElDaFUNCmRHVnlNa0JrWVhOb1pYSXRhSGxrTFhSbGMzUXVZMjl0UG9rQk9BUV RBUUlBSWdVQ1N0Wm9QZ0liRFFZTENRZ0gNCmsxOVFja1Rwd0Jkc2tFWXVtRnZtV3Zl NVVYMlNWVjdmek9DMG5adGdGeHRaR2xKaEdtanNBM3J4RlRsYitJcmENCldaYXlYQ1 dZaUN6ZDdtOXo1L0t5R0QyR0ZUSy85NG1kbTI1TjZHWGgvYjM1cElGWlhCSS9yWmpy WXJoWVJCRnUNCkd0ekdGSXc5QUFuRnlVekVVVVZmUFdVdEJlNXlITVc1NEM2MG5Iaz V4WUlhNnFGaGlMcDRQWXF
REPONSE
-------
aQ3JZWDFpSXMNCmZSUk9GQT09DQo9U1RIcg0KLS0tLS1F TkQgUEdQIFBVQkxJQyBLRVkgQkxPQ0stLS0tLQ==" reason="EncryptionPublicKeyInvalidFormat" />
</AppsForYourDomainErrors>
响应
-------
我已经没有主意了,欢迎提供任何帮助:)您的base64编码字符串中有空格(这在响应中显示)。删除空格(例如,
键。替换(/\s/g,”)
),您应该可以了。我找到了一个使用的解决方案
现在它工作得很好。以下是可能需要它的人的代码:
function uploadPublicKey(domain, key, token) {
var params =
"<atom:entry xmlns:atom='http://www.w3.org/2005/Atom' xmlns:apps='http://schemas.google.com/apps/2006'>"+
"<apps:property name='publicKey' value='"+key+"'/>"+
"</atom:entry>";
unirest
.post('https://apps-apis.google.com/a/feeds/compliance/audit/publickey/' + encodeURIComponent(domain))
.headers({
'Authorization': 'OAuth ' + token,
'Content-Type': 'application/atom+xml;charset=utf-8',
'Content-Length': params.length}
)
.send(params)
.end(function (response) {
console.log(response.body);
});
}
函数上传公钥(域、密钥、令牌){
变量参数=
""+
""+
"";
优利斯特
.post('https://apps-apis.google.com/a/feeds/compliance/audit/publickey/“+encodeURIComponent(域))
.标题({
“授权”:“OAuth”+令牌,
“内容类型”:“应用程序/atom+xml;字符集=utf-8”,
“内容长度”:params.Length}
)
.send(参数)
.end(功能(响应){
console.log(response.body);
});
}
基于
尝试上载无效密钥将返回错误代码1411(EncryptionPublicKeyInvalidFormat)
还请注意,无效的OpenPGP密钥通常是最常见的错误原因。为此,请尝试按照电子邮件审核API的分步说明摘要进行操作。上一步提到的再次检查您是否复制了所有行,包括标题,并且没有添加任何额外的行。
最后,在中,首先使用base64编码的公钥创建一个XML条目,如下例所示:
<atom:entry xmlns:atom='http://www.w3.org/2005/Atom' xmlns:apps='http://schemas.google.com/apps/2006'>
<apps:property name="publicKey" value="the base64 Encoded Key"/>
</atom:entry>
如果成功,服务器将返回在Google Data API文档中找到的201创建状态代码
请尝试查看给定的文档,以获取更多信息,包括授权协议的详细信息。Thx获得答案,但问题不是从这里来的,我已经尝试过同样的问题;只是在第一个响应中有更多的字符。
function uploadPublicKey(domain, key, token) {
var params =
"<atom:entry xmlns:atom='http://www.w3.org/2005/Atom' xmlns:apps='http://schemas.google.com/apps/2006'>"+
"<apps:property name='publicKey' value='"+key+"'/>"+
"</atom:entry>";
unirest
.post('https://apps-apis.google.com/a/feeds/compliance/audit/publickey/' + encodeURIComponent(domain))
.headers({
'Authorization': 'OAuth ' + token,
'Content-Type': 'application/atom+xml;charset=utf-8',
'Content-Length': params.length}
)
.send(params)
.end(function (response) {
console.log(response.body);
});
}
<atom:entry xmlns:atom='http://www.w3.org/2005/Atom' xmlns:apps='http://schemas.google.com/apps/2006'>
<apps:property name="publicKey" value="the base64 Encoded Key"/>
</atom:entry>
POST https://apps-apis.google.com/a/feeds/compliance/audit/publickey/{domain name}