我正在尝试对Search Console API进行POST调用。我在 API 资源管理器下运行了我的示例,但是当我尝试从我的 meteor 项目进行相同的调用时,我收到错误:
对象 {错误: 对象} 错误: 对象代码: 400 错误: 数组[1] 消息:"解析错误">
我的代码:
function fetchSEOForWebsite(website) {
var call = 'webmasters/v3/sites/' + 'mdbootstrap.com' + '/searchAnalytics/query'
var params = {
"searchType": "web",
"dimensions": [
"query",
"date",
"page"
],
"startDate": "2016-02-06",
"endDate": "2016-02-08"
}
GoogleApi.post(call, {
params: params
}, function(error, answer) {
console.log(answer);
});
}
从Chrome控制台,我可以看到POST有效负载:
searchType=web&dimensions=query%2Cdate%2Cpage&startDate=2016-02-06&endDate=2016-02-08
同样的查询在 API 资源管理器中工作得很好:
POST https://www.googleapis.com/webmasters/v3/sites/http%3A%2F%2Fmdbootstrap.com/searchAnalytics/query?key={YOUR_API_KEY}
{
"searchType": "web",
"dimensions": [
"query",
"date",
"page"
],
"startDate": "2016-02-06",
"endDate": "2016-02-08"
}
我做错了什么?
我正在使用流星谷歌APIhttps://github.com/percolatestudio/meteor-google-api
更新:我还检查了通过 API 资源管理器发送的 paylod,它是不同的:
{ "搜索类型": "网站", "维度": ["查询"、"日期"、"页面">
], "开始日期": "2016-02-06", "结束日期": "2016-02-08" }
所以看起来由于某种原因,我的参数没有作为 JSON 对象传递来调用......
来自percolate:google-api package Readme
GoogleApi是围绕HTTP的Google OAuth身份验证包装器,因此它 采取相同的论点。例如,要传递 JSON 正文 GoogleApi.post,使用:
GoogleApi.post('/your/api/path', { data: jsonBody }(;
所以我会尝试使用data:
而不是params: