2012-04-28 105 views
2

我尝试将DrEdit的Python版本联机(在GAE中)。对Google Drive API使用DrEdit Python示例的错误500

现在从drive.google.com使用时正常工作,但是从.appspot.com的地址访问它产生:

Traceback (most recent call last): 
    File "/base/python_runtime/python_lib/versions/1/google/appengine/ext/webapp/_webapp25.py", line 701, in __call__ 
    handler.get(*groups) 
    File "/base/data/home/apps/s~driveedit/1.358524704843584683/main.py", line 282, in get 
    drive_state = DriveState.FromRequest(self.request) 
    File "/base/data/home/apps/s~driveedit/1.358524704843584683/main.py", line 120, in FromRequest 
    return DriveState(request.get('state')) 
    File "/base/data/home/apps/s~driveedit/1.358524704843584683/main.py", line 106, in __init__ 
    state_data = json.loads(state) 
    File "/base/python_runtime/python_lib/versions/1/simplejson/__init__.py", line 388, in loads 
    return _default_decoder.decode(s) 
    File "/base/python_runtime/python_lib/versions/1/simplejson/decoder.py", line 402, in decode 
    obj, end = self.raw_decode(s, idx=_w(s, 0).end()) 
    File "/base/python_runtime/python_lib/versions/1/simplejson/decoder.py", line 420, in raw_decode 
    raise JSONDecodeError("No JSON object could be decoded", s, idx) 
JSONDecodeError: No JSON object could be decoded: line 1 column 0 (char 0) 

当我添加“打印request.GET中(‘状态’)”在FromRequest函数中,我得到:

Status: 500 Internal Server Error Content-Type: text/html; charset=utf-8 Cache-Control: no-cache Set-Cookie: userid=MTE2MDU1NTY3NjYxNTUzNzA2MTg2|1335608904|67eb86b0a74414014c05c4085832522f16f322f1; expires=Mon, 28 May 2012 10:28:24 GMT; Path=/ Expires: Fri, 01 Jan 1990 00:00:00 GMT Content-Length: 1206 

为了解决这个问题,我可以看些什么?

回答

1

你应该修改DriveState来处理这个问题,像这样:

class DriveState(object): 
    """Store state provided by Drive.""" 

    def __init__(self, state): 
    """Create a new instance of drive state. 

    Parse and load the JSON state parameter. 

    Args: 
     state: State query parameter as a string. 
    """ 
    if state: 
     state_data = json.loads(state) 
     self.action = state_data['action'] 
     self.ids = map(str, state_data.get('ids', [])) 
    else: 
     self.action = 'create' 
     self.ids = [] 

我会更新的代码示例,以反映这一点。

编辑:更新于http://code.google.com/p/google-drive-sdk-samples/source/detail?r=53dfd57c6044394670ef0c14f1f0bb6652d87b14