我正在尝试使用Google Contacts Data API从我的Django应用程序(不使用Google应用程序引擎)检索Google通讯录中的数据。浏览authentication documentation以及Data API Python client docs
获取一次性令牌的第一步(AuthSubRequest)工作正常。下一步(AuthSubSessionToken),它是将一次性令牌升级为会话令牌。 python API调用UpgradeToSessionToken()根本不适合我,它给了我NonAuthSubToken异常:
gd_client = gdata.contacts.service.ContactsService()
gd_client.auth_token = authsub_token
gd_client.UpgradeToSessionToken()
作为替代方案,我希望通过“手动”构建HTTP请求来实现它:
url = 'https://www.google.com/accounts/AuthSubSessionToken'
headers = {
'Content-Type': 'application/x-www-form-urlencoded',
'Authorization': 'AuthSub token=' + authsub_token,
'User-Agent': 'Python/2.6.1',
'Host': 'https://www.google.com',
'Accept': 'text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2',
'Connection': 'keep-alive',
}
req = urllib2.Request(url, None, headers)
response = urllib2.urlopen(req)
这给了我一个不同的错误:
HTTP错误302:HTTP服务器返回了重定向错误,导致无限循环。最后30x错误消息是:暂时移动
我在这里做错了什么?我非常感谢我尝试使用的方法之一的帮助/建议/建议:Python API调用(UpgradeToSessionToken)或使用urllib2手动构建HTTP请求。
答案 0 :(得分:4)
根据2.0文档here,有一个python示例集...
运行示例代码
完整的工作示例客户端,包含本文档中显示的所有示例代码,可在Python客户端库分发中的
samples/contacts/contacts_example.py
目录下找到。示例客户端对联系人执行多项操作,以演示如何使用Contacts Data API。
希望它会指出你正确的方向。
答案 1 :(得分:1)
我最近遇到过类似的问题。通过将“安全”设置为“真实”来解决我的问题。
next = 'http://www.coolcalendarsite.com/welcome.pyc'
scope = 'http://www.google.com/calendar/feeds/'
secure = True
session = True
calendar_service = gdata.calendar.service.CalendarService()
答案 2 :(得分:1)
有四种不同的身份验证方式。使用AuthSub对您来说真的很重要吗?如果您无法使AuthSub工作,请考虑ClientLogin方法。我没有遇到麻烦。