6

我正在尝试让我的 Django 应用程序(不使用 Google 应用程序引擎)使用 Google 联系人数据 API 从 Google 联系人中检索数据。浏览身份验证文档以及Data API Python 客户端文档

获取一次性令牌的第一步(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 请求。

4

3 回答 3

4

根据此处的 2.0 文档,有一个 python 示例集...

运行示例代码

包含本文档中显示的所有示例代码的完整工作示例客户端可在 Python 客户端库分发中的目录下找到samples/contacts/contacts_example.py

示例客户端对联系人执行多项操作以演示联系人数据 API 的使用。

希望它会为您指明正确的方向。

于 2009-04-02T14:43:43.320 回答
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()
于 2009-04-04T15:26:00.107 回答
1

有四种不同的身份验证方式。使用 AuthSub 对您来说真的那么重要吗?如果您无法让 AuthSub 工作,请考虑使用ClientLogin方法。我可以毫不费力地让它发挥作用。

于 2009-04-04T15:39:21.573 回答