使用Blogger API获取的帖子数限制(错误400)

问题描述 投票:2回答:2

我正在尝试使用Blogger API从博客中获取所有帖子。由于某些未知原因,要获取的最大帖子数似乎限制为20。

如果我尝试这个网址:

https://www.googleapis.com/blogger/v3/blogs/3089072491354463482/posts?maxResults=20&fields=items(title)&key=AIzaSyAJO5J-pRCaGOIeRLIJfvAPwxpMLKvwebU

我得到以下回复(按预期列出最后20个帖子标题):

{
"items": [
  {
   "title": "El Caballero"
  },
  {
   "title": "Une traversée de frontière… étonnante!"
  },
  {
   "title": "Hasta luego querida Argentina!"
  },
  {
   "title": "Dernier jour en Argentine"
  },
  {
   "title": "Humahuaca"
  },
  {
   "title": "Purmamarca"
  },
  {
   "title": "Tilcara"
  },
  {
   "title": "Premières grèves"
  },
  {
   "title": "Le Nord Argentin: Salta"
  },
  {
   "title": "Ca en fait de l'eau tout ça..."
  },
  {
   "title": "Un peu de pluie au Brésil"
  },
  {
   "title": "Iguazu"
  },
  {
   "title": "San José"
  },
  {
   "title": "Adieu à Buenos Aires"
  },
  {
   "title": "Traversons en Uruguay"
  },
  {
   "title": "Retour à Buenos Aires"
  },
  {
   "title": "Fin de l'aventure Patagonienne"
  },
  {
   "title": "Les fameuses tours nous surprennent"
  },
  {
   "title": "Un peu de pluie pour se changer les idées"
  },
  {
   "title": "Valle Francés"
  }
 ]
}

但是,如果我增加maxResults参数,

https://www.googleapis.com/blogger/v3/blogs/3089072491354463482/posts?maxResults=21&fields=items(title)&key=AIzaSyAJO5J-pRCaGOIeRLIJfvAPwxpMLKvwebU

我收到以下错误:

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "invalid",
    "message": "Invalid Value"
   }
  ],
  "code": 400,
  "message": "Invalid Value"
 }
}

如何增加我可以获取的最大帖子数限制?

谢谢,

萨科

html rest google-api blogger
2个回答
6
投票

我认为API仅限于最多提取20个结果。

因此,为了获取超过20个结果,您必须使用Bloggers的参考API中指定的pageToken参数。

您的第一个请求应包括nextPageToken,以便您在响应中获得它。比使用此令牌来检索下一页等等。

您的第一个请求必须是这样的:

https://www.googleapis.com/blogger/v3/blogs/3089072491354463482/posts?maxResults=20&fields=items%28title%29%2CnextPageToken&key=AIzaSyAJO5J-pRCaGOIeRLIJfvAPwxpMLKvwebU

这是预期的结果:

{
 "nextPageToken": "CgkIChignPaz5ycQ-rn0pIfipe8q",
 "items": [
  {
   "title": "El Caballero"
  },
  {
   "title": "Une traversée de frontière… étonnante!"
  },
  {
   "title": "Hasta luego querida Argentina!"
  },
  {
   "title": "Dernier jour en Argentine"
  },
  {
   "title": "Humahuaca"
  },
  {
   "title": "Purmamarca"
  },
  {
   "title": "Tilcara"
  },
  {
   "title": "Premières grèves"
  },
  {
   "title": "Le Nord Argentin: Salta"
  },
  {
   "title": "Ca en fait de l'eau tout ça..."
  }
 ]
}

现在您所要做的就是在结果中选择"nextPageToken": "CgkIChignPaz5ycQ-rn0pIfipe8q"并将其包含在您的下一个请求中,如下所示:

https://www.googleapis.com/blogger/v3/blogs/3089072491354463482/posts?%20maxResults=20&pageToken=CgkIChignPaz5ycQ-rn0pIfipe8q&fields=items%28title%29%2CnextPageToken&key=AIzaSyAJO5J-pRCaGOIeRLIJfvAPwxpMLKvwebU

除了在下一个请求中使用的新``nextPageToken`之外,结果应显示接下来的20个帖子。


2
投票

我实施了Walid Laribi建议的旅游博客页面,该页面从博客中检索所有帖子的位置并绘制旅行期间拍摄的路径(blog)。

要获取所有帖子的位置,我首先找到一个脚本,检索前10个帖子并给我nextPageToken

<script src="https://www.googleapis.com/blogger/v3/blogs/3089072491354463482/posts?fields=nextPageToken,items(title,location(name,lat,lng),url,published)&key=AIzaSyAJO5J-pRCaGOIeRLIJfvAPwxpMLKvwebU&callback=handleResponse">

在前一个脚本的回调中,我们可以获取每个帖子的位置以及创建和执行脚本以获取下一个帖子:

// Get latitude/longitude from Blogger
function handleResponse(response) {
 for(i=0; i< response.items.length; i++){
  if(response.items[i].location != undefined){
   Lat.push(response.items[i].location.lat);
   Lng.push(response.items[i].location.lng);
   // etc.
  }
 }

 if(response.nextPageToken != undefined){
  var srctxt = 'https://www.googleapis.com/blogger/v3/blogs/3089072491354463482/posts?fields=nextPageToken,items(title,location(name,lat,lng),url,published)&key=AIzaSyAJO5J-pRCaGOIeRLIJfvAPwxpMLKvwebU&callback=handleResponse&pageToken=' + response.nextPageToken;

  // Execute the new script
  var head = document.getElementsByTagName('head')[0];
  var scriptElement = document.createElement('script');
  scriptElement.setAttribute('type', 'text/javascript');
  scriptElement.setAttribute('src', srctxt);
  head.appendChild(scriptElement);
  head.removeChild(scriptElement);
 }
}
© www.soinside.com 2019 - 2024. All rights reserved.