Google阅读器API - 全部标记为已读

时间:2010-12-23 18:43:14

标签: php jquery google-reader

我正在尝试编写一个脚本,标记我在谷歌阅读器中读取的所有Feed项目。它应该像将4个变量发布到API链接一样简单。但是,我可以成功地向Google发送HTTP POST而不会收到400错误的唯一方法是使用以下简单的HTML FORM POST。我已经尝试过PHP cURL,但是我收到来自谷歌的400错误,说明我做了一个糟糕的客户请求。

<form method="post" action="http://www.google.com/reader/api/0/mark-all-as-read">
   <input type="hidden" name="s" value="user/10408189040522127442/state/com.google/reading-list" />
   <input type="hidden" name="t" value="Your reading list" />
   <input type="hidden" name="ts" value="<?php echo time(); ?>" />
   <input type="hidden" name="T" value="<?php session_start(); echo $_SESSION['token']; ?>" />                
   <input type="button" value="Mark All As Read" /></form>

使用HTML表单提交相同的详细信息(我尝试使用cURL)工作正常,成功将所有项目标记为已读,但由于FORM ACTION设置为外部网站,因此在提交时会重定向到该表单。为了解决这个问题,我尝试使用以下内容进行AJAX FORM提交,因此没有重定向,但这不起作用,也没有提交任何内容。

$(document).ready(function(){
    $("input[type=button]").click(function() {
        $.post($('form').attr("action"), $('form').formSerialize()); 
    });
});

任何人都可以提供建议吗? 1)为什么cURL POST不起作用,但是简单的HTML FORM POST呢? 2)为什么我不能(默默地)使用AJAX提交提交HTML FORM?

2 个答案:

答案 0 :(得分:0)

Google可能会在发布帖子时要求设置某些标头,这就是为什么它可能会响应400错误。使用cURL提交时,请检查使用基本<form>发送的标头是否也已设置。

另外,你不能将$ .post()加入Google的原因是same origin policy

答案 1 :(得分:0)

Google确实需要为每个帖子添加额外的标题,而有些标题会获得。

curl_setopt($ ch,CURLOPT_HTTPHEADER,array('授权:GoogleLogin auth ='。$ auth));

要获得验证,您需要点击https://www.google.com/accounts/ClientLogin

看一下这个答案,Google Reader API?