AppEngine和Context.IO API存在一个非常奇怪的问题。
我正在使用contextIO2库,该库使用python-oauth2。
当我通过终端尝试使用库(contextIO2)时,我没有遇到任何问题(或者至少还没有问题。但是我已经在几天内尝试了几十次没有问题)。
但是当在AppEngine上运行代码时, 有时 会出现401 Authorization Invalid consumer key
错误。我不确定是什么导致它,因为一分钟请求就好了,然后当我再次尝试请求时,我得到401
,然后一段时间后它会好的,然后不再好了,等等。
我通过电子邮件发送了Context.IO支持,他说当他尝试我的应用程序的url并得到错误时,“oauth_consumer_key似乎没有正确传输”。可能是什么导致了这个? AppEngine弄乱了请求? pythoan-oauth2 bug? contextIO2 bug?
这是我的处理程序代码之一:
class ReceiveConnectTokenHandler(webapp2.RequestHandler):
def get(self):
contextio_token = self.request.get('contextio_token')
cio = ContextIO(API_KEY, API_SECRET)
# get token's associated email
try:
token = cio.get_connect_token(contextio_token)
except RequestError, e:
if e.status_code == 404:
self.response.write(
'Token %s not found. ' % contextio_token)
return
raise e
account = token.account
if not account or not account.email_addresses:
self.response.write(
'Token %s has no email associated with it yet.' % contextio_token)
return
email = account.email_addresses[0]
# clear email's memcache
memcache.delete_multi(['accounts', 'no_account'], namespace=email)
self.response.write(
'''%s is now connected with Context.IO. Please verify in the
gadget that you have granted access. You can close this window.''' % email
)
这只是https://api.context.io/2.0/connect_tokens/{{token}}
答案 0 :(得分:0)
按照格雷格的建议发布答案。
问题是contextIO2库通过以下方式定义了它的request_uri
方法:
def request_uri(uri, method='GET', params={}, headers={}):
这是一个常见的Python陷阱(#5 in this list)。我已通知Context.IO支持并已发送拉取请求。