7

我使用以下 python 函数在谷歌阅读器中将项目标记为已读,但它总是返回错误 HTTPErrors: HTTP 401: Unauthorized:

def mark_as_read(SID, entryid):  
    令牌 = get_token(SID)  
    mark_as_read_url = 'http://www.google.com/reader/api/0/edit-tag'  
    header = {'Content-type': 'application/x-www-form-urlencoded'}  
    post_data = urllib.urlencode({ 'i': entryid, 'a': 'user/-/state/com.google/read', 'ac': 'edit', 'T': token })  
    request = urllib2.Request(mark_as_read_url, post_data, header)  
    f = urllib2.urlopen(请求)  
    结果 = f.read()

其他功能正在成功检索提要和条目,因此它不是像错误的用户名或密码这样的基本问题。我读过需要 urlencoding,所以我已经这样做了。示例 entryid 如下所示:tag:google.com,2005:reader/item/f66ad0fb64f56a22

我究竟做错了什么?

4

2 回答 2

2

您似乎缺少身份验证标头:

header = {
    'Content-type': 'application/x-www-form-urlencoded',
    'Authorization': 'GoogleLogin auth=YOUR_AUTH_TOKEN'
}
于 2011-05-10T19:17:29.500 回答
0

当我将此与我在 Firefox 中发出的请求(使用 liveheaders 检查)进行比较时,它看起来还不错。我只有额外的参数

async=true
sync=true
s=feed/http://feeds.feedburner.com/37signals/beM

而在用户中,在的地方-有一个很长的id。

所以你可以尝试添加两个同步参数,添加 s 参数,并为-.

关于你正在做的 urlencoding,这似乎没问题。

于 2011-03-02T17:39:59.203 回答