关于appengine的oauth:访问问题

时间:2010-08-27 17:07:27

标签: python google-app-engine oauth

我在AppEngine上通过OAuth访问资源时遇到了一些困难。

我的客户端应用程序(使用python-oauth在Linux上)能够检索有效的“访问令牌”,但当我尝试访问受保护资源(例如user = oauth.get_current_user())时,我得到oauth.OAuthRequestError抛出异常。

headers: {'Content-Length': '21', 'User-Agent': 'musync,gzip(gfe),gzip(gfe)', 'Host': 'services.systemical.com', 'X-Google-Apps-Metadata': 'domain=systemical.com', 'X-Zoo': 'app-id=services-systemical,domain=systemical.com', 'Content-Type': 'application/json', 'Authorization': 'OAuth oauth_nonce="03259912", oauth_timestamp="1282928181", oauth_consumer_key="services.systemical.com", oauth_signature_method="HMAC-SHA1", oauth_version="1.0", oauth_token="1%2Fo0-tcGTfRzkkm449qVxd_8CfCvMcW_0xwL024nO3HgI", oauth_signature="2ojSK6Ws%2BvDxx3Rdlltf53hlI2w%3D"'}

我怀疑该问题可能与域名相关,即我在services.systemical.com上使用了结束点,而我发现AppEngine报告了domain=systemical.com的{​​{1}}。

我该如何解决这个问题?如何使用子域与Apps / AppEngine?

是一个问题

域“services.systemical.com”指向(DNS CNAME)我的appengine应用程序X-Google-Apps-Metadata。域services-systemical.appspot.com与Google Apps域相关联。


更新:以下是我正在使用的客户端代码:

systemical.com

1 个答案:

答案 0 :(得分:0)

我有类似的问题。虽然我不能更具体(我没有代码)我可以告诉你,问题可能与请求有关。根据您的要求,Google App Engine非常挑剔。

尝试将请求正文发送为空。例如,这是通常的呼叫:

import httplib
connection = httplib.HTTPSConnection('server.com')
connection.request('POST', REQUEST_TOKEN_URL,body = urlencode(body), headers = {'Authorization': header})

但你应该发一个空身:

connection.request('POST', REQUEST_TOKEN_URL, headers = {'Authorization': header})

标题包含OAuth所需的所有信息。