GetAuthSubToken返回None

时间:2010-03-14 10:20:48

标签: python google-app-engine gdata-api gdata

嘿伙计们,我对如何获得身份验证令牌感到有点迷失。这是我在授权我的应用程序返回时使用的代码:

client = gdata.service.GDataService()
gdata.alt.appengine.run_on_appengine(client)
sessionToken = gdata.auth.extract_auth_sub_token_from_url(self.request.uri)
client.UpgradeToSessionToken(sessionToken)
logging.info(client.GetAuthSubToken())

记录的是“无”,所以看起来似乎正确:-( 如果我用这个:

temp = client.upgrade_to_session_token(sessionToken)
logging.info(dump(temp))

我明白了:

{'scopes':['http://www.google.com/calendar/feeds/'],'auth_header':'AuthSub token = CNKe7drpFRDzp8uVARjD-s-wAg'}

所以我可以看到我正在获取一个AuthSub令牌,我想我可以解析它并获取令牌,但这似乎不是事情应该有效的方式。

如果我尝试使用AuthSubTokenInfo,我会得到:

Traceback (most recent call last):
  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/ext/webapp/__init__.py", line 507, in __call__
    handler.get(*groups)
  File "controllers/indexController.py", line 47, in get
    logging.info(client.AuthSubTokenInfo())
  File "/Users/matthusby/Dropbox/appengine/projects/FBCal/gdata/service.py", line 938, in AuthSubTokenInfo
    token = self.token_store.find_token(scopes[0])
TypeError: 'NoneType' object is unsubscriptable

所以看起来我的token_store没有正确填充,这是我应该做的事情吗?

我也在使用gdata 2.0.9

由于 马特

1 个答案:

答案 0 :(得分:0)

回答我自己的问题:

当您获得令牌时,只需致电:

client.token_store.add_token(sessionToken)

并且App Engine会将它存储在新的实体类型中。然后,当打电话给日历服务时,不要设置authsubtoken,因为它也会照顾你。