我目前正在尝试开发GAE应用程序。
我按照本教程使用OAuth访问gdocs。 http://code.google.com/appengine/articles/python/retrieving_gdata_feeds.html
我无法理解的是如何在之后重用此令牌。
如果我直接尝试访问第二个连接上的Feed,我会因缺乏授权而被退回(401)。 我想我必须每次使用我的Gdocs对象中的access_token进行身份验证,但找不到正确的方法。
有什么想法吗?
我的代码与教程中的相同,加上:
# Create an instance of the DocsService to make API calls
gdocs = gdata.docs.client.DocsClient(source = SETTINGS['APP_NAME'])
class MainPage(webapp.RequestHandler):
@login_required
def get(self):
my_user = users.get_current_user()
# I think I have to authenticate, but don't know how here
token_key = 'access_token_%s' % my_user.user_id()
access_token = gdata.gauth.ae_load(token_key)
gdocs.auth_token = gdocs.get_access_token(access_token)
feed = gdocs.GetResources()
for entry in feed.entry:
template = '<div>%s</div>'
self.response.out.write(template % entry.title.text)
默认情况下启动。
我知道我可以使用ae_load(token_key)访问令牌密钥,因为我可以打印它。 我应该使用gdocs进行身份验证,还是使用更一般的客户端,如下所示: http://ikaisays.com/2011/05/26/setting-up-an-oauth-provider-on-google-app-engine/
我查了一下,我的令牌列在我的私人Google帐户中。
先谢谢!
答案 0 :(得分:1)
您应该存储auth_token或数据以在数据存储区中重建它。然后在创建请求对象时,传入auth_token。这在GDClient doc string中有解释。
您可能还会发现fetching gdata feeds上的文章很有用。
答案 1 :(得分:1)
我终于通过在谷歌apis中搜索来回答我自己的问题。
以下是我如何使用它:
access_token_key = 'access_token_%s' % user.user_id()
access_token = gdata.gauth.ae_load(access_token_key)
# authenticating here
#gdocs.auth_token = access_token
另一个版本可能是这样的:
#gdocs.auth_token = gdata.gauth.OAuthHmacToken(SETTINGS['CONSUMER_KEY'],
# SETTINGS['CONSUMER_SECRET'],
# access_token,
# access_token_key,
# gdata.gauth.ACCESS_TOKEN)
作为州谷歌的文件。