Google Data API身份验证

时间:2009-03-30 00:38:25

标签: python django google-api gdata gdata-api

我正在尝试使用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请求。

3 个答案:

答案 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方法。我没有遇到麻烦。