我可以插入任何 Google Reader API 吗?我用 PHP 构建了一个干净的 RSS/Atom 阅读器,并且很想从 Google Reader 中获得所有好东西,比如提要的历史,能够为每个提要项目添加评论等。
3 回答
我已经在 python 中构建了一些谷歌阅读器集成,但我可以分享一些 api 知识,这样你就可以开始了。output=json 也适用于所有人。
登录:https www.google.com/accounts/ClientLogin
POST &email=email&passwd=password&service=reader&source=appname&continue=http://www.google.com
从响应中获取 Auth=
下一个命中:www.google.com/reader/api/0/token
HEADER Authorization=GoogleLogin auth=$Auth
该响应成为会话的 $token。
从那里它只是打一些 url 总是传递该 auth 标头并将令牌包含在查询字符串或帖子中。
获取您的订阅列表:www.google.com/reader/api/0/subscription/list?output=xml
要修改订阅,这是基本 url 加上一些用于执行操作的发布数据
www.google.com/reader/api/0/subscription/edit?pos=0&client=$source
POST 添加:s=$streams&t=$title&T=$token&ac=subscribe
POST 删除:s=$stream&T=$token&ac=unsubscribe
$stream 通常是 feed/$feedurl,就像 techcrunch 一样,feed/http://feeds.feedburner.com/Techcrunch
抱歉,我不得不修改一些网址,因为我还没有足够的代表。
这是python中的一个工作示例:
import urllib, urllib2
import json, pprint
email, password = 'jose@gmail.com', 'nowayjose'
clientapp, service = 'reader', 'reader'
params = urllib.urlencode({'Email': email, 'Passwd': password, 'source': clientapp, 'service': service})
req = urllib2.Request(url='https://www.google.com/accounts/ClientLogin', data=params)
f = urllib2.urlopen(req)
for line in f.readlines():
if line[0:5] == 'Auth=':
auth=line[5:]
root = "http://www.google.com/reader/api/0/"
req = urllib2.Request(root + "token")
req.add_header('Authorization', 'GoogleLogin auth=' + auth)
f = urllib2.urlopen(req)
token = f.readlines()[0]
# get user id
req = urllib2.Request(root + "user-info?output=json&token="+token)
req.add_header('Authorization', 'GoogleLogin auth=' + auth)
f = urllib2.urlopen(req)
dictUser = json.loads(f.read())
user_id = dictUser["userId"]
print "user_id",user_id
req = urllib2.Request(root + "subscription/list?output=json&token="+token)
req.add_header('Authorization', 'GoogleLogin auth=' + auth)
f = urllib2.urlopen(req)
# for line in f.readlines():
# print line
dictSubscriptions = json.loads(f.read())
# pprint.pprint(dictSubscriptions)
# print the first 3 subscription titles
for i in dictSubscriptions["subscriptions"][0:2]:
print i["title"]
req = urllib2.Request("http://www.google.com/reader/api/0/unread-count?output=json&token="+token)
req.add_header('Authorization', 'GoogleLogin auth=' + auth)
f = urllib2.urlopen(req)
dictUnread = json.loads(f.read())
# pprint.pprint(dictUnread)
# print the first 3 unread folders
for i in dictUnread["unreadcounts"][0:3]:
print i["count"], i["id"]
# this returns all starred items as xml
req = urllib2.Request("http://www.google.com/reader/atom/user/"+user_id+"/state/com.google/starred?token="+token)
req.add_header('Authorization', 'GoogleLogin auth=' + auth)
f = urllib2.urlopen(req)
starredItems = f.read()
谷歌阅读器有供用户使用的提要。我想你可以使用这些。此外,它们已准备好PubSubHubbub,因此您将获得评论/喜欢......只要它们发生。
此外,自 2013 年 7 月 1 日起,Google Reader 已不复存在。替换选项包括Superfeedr。