一旦接受使用访问令牌?

时间:2012-02-10 16:57:47

标签: python google-app-engine

我目前正在尝试开发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帐户中。

先谢谢!

2 个答案:

答案 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) 
作为州谷歌的文件。