2

我尝试将 Python 版本的 DrEdit 放到网上(在 GAE 中)。

现在从 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)

当我在 FromRequest 函数中添加“print request.get('state')”时,我得到:

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

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

4

1 回答 1

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中更新

于 2012-04-28T15:59:11.750 回答