使用Google API POST调用时出现400 Parser错误

时间:2016-02-09 21:34:39

标签: json rest meteor google-api

我正在尝试对Search Console API进行POST调用。我在API Explorer中运行了我的示例,但是当我尝试从我的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有效负载:

  

检索类别=幅&安培;尺寸=查询%2Cdate%2Cpage&安培;的startDate = 2016年2月6日&安培;结束日期= 2016年2月8日

同样的查询在API Explorer中运行得非常好:

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"
}

我做错了什么?

我正在使用Meteor Google Api https://github.com/percolatestudio/meteor-google-api

更新: 我还检查了通过API Explorer发送的paylod,它与众不同:

  

{" searchType":" web","维度":["查询","日期", "页面"
  ]," startDate":" 2016-02-06"," endDate":" 2016-02-08" }

所以看起来由于某些原因我的params不作为JSON对象传递来调用...

1 个答案:

答案 0 :(得分:1)

来自percolate:google-api package自述

  

GoogleApi是围绕HTTP的Google OAuth身份验证包装器,所以它   采用相同的论点。例如,传入JSON主体   GoogleApi.post,使用:

     

GoogleApi.post(' / your / api / path',{data:jsonBody});

所以我会尝试使用data:代替params: