通过API v3使用PHP Google_Client,Google_Service_Blogger

时间:2015-05-28 02:04:33

标签: php blogger google-api-php-client

我正在使用Google PHP客户端库访问Google API(请参阅reference

我正在尝试从私人博客中获取帖子列表(在RSS Feed中可以找到相同的内容)。私人博客博客显然没有开放的RSS源,所以这是我对两者的尝试

  1. 以编程方式检索博客内容
  2. 满足博客的隐私限制。
  3. API客户端中使用的令牌是博客的授权读者。

    这是代码。这一切都很好(连接,检索正确的博客对象等),但在尝试使用getItems函数获取post数据时失败(参见library source,第2007行)。 empty array is returned

    $client= new Google_Client();
    $client->setClientId(GGL_CLIENTID);
    $client->setClientSecret(GGL_SECRET);
    $client->setRedirectUri(GGL_REDIRECT);
    $client->refreshToken(GGL_TOKEN);
    $service=new Google_Service_Blogger($client);
    
    $blog      = $service->blogs->getByUrl('http://MYBLOG.blogspot.com/');
    $blogName  = $blog->getName();
    $blogUrl   = $blog->getURL();
    $postsObj  = $blog->getPosts();
    $postCount = $postsObj->getTotalItems();
    $posts     = $postsObj->getItems();
    
    echo "BLOG NAME: $blogName \n";
    echo "BLOG URL: $blogUrl \n";
    echo "TOTAL POSTS: $postCount \n";
    echo "POST DATA: \n"; print_r($posts);
    

    鉴于通过getTotalItems显示正确数量的帖子,我确信所有的管道都是正确的。如何返回帖子数据?

    注意:我意识到客户端库处于测试阶段,所以这可能是一个尚未填补的漏洞。

3 个答案:

答案 0 :(得分:2)

  

回显“POST DATA:\ n”;的print_r($帖);

你的替换:

$blogId = $blog->getId();
$post = $service->posts->listPosts($blogId);
print_r($post);

答案 1 :(得分:0)

以下是如何从博客中列出特定数量的帖子(如果您受到限制):

$id = $blog->getId();
$posts = $service->posts->listPosts($id, array("maxResults"=>5));
foreach($posts as $post) {
   echo "<br/>title:  ".$post->getTitle();
   echo "<br/>url:  ".$post->getUrl();
   echo "<br/>labels:  <pre>".print_r($post->getLabels(),TRUE)."</pre>";
   // etc.
}

答案 2 :(得分:0)

$blogger = new Google_Service_Blogger( $this->client ); // pass authenticated client
$posts = $blogger->posts->listPosts($blogId); // blog id : e.g 1751515248423926432
echo "<pre>";
print_r( $posts );
echo "</pre>";