400 解析器错误与谷歌 API POST 调用



我正在尝试对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:

相关内容

  • 没有找到相关文章