OAuth проблема в разработке Google AppEngine - PullRequest
0 голосов
/ 10 мая 2011

Я столкнулся со странной проблемой при разработке Google App Engine, каждый раз, когда в моем почтовом запросе переносится содержание тела, ядру приложения не удается авторизовать мою учетную запись, но запрос на получение работает.Кто-нибудь может мне помочь?я использую библиотеку oauth ChromeExOAuth в разработке расширения chrome.

    oauth.authorize(function(){
        var request = {
            'method': 'POST',
            'headers': {
                "Content-Type" : "application/x-www-form-urlencoded"
            },
            'parameters': {
            },
            'body': "a=b"
        };
        oauth.sendSignedRequest("http://mytabshub.appspot.com/tabshub", function(resp, xhr){
            console.log("responding from test server", xhr.responseText);
        }, request);
    });

1 Ответ

0 голосов
/ 10 мая 2011

Для запросов POST вы должны передать параметр oauth, закодированный в теле запроса.Соответствующий код в SDK выглядит следующим образом (dev_appserver_oauth.py):

def _Parse(self, request, base_env_dict):
  """Parses a request into convenient pieces.

  Args:
    request: AppServerRequest.
    base_env_dict: Dictionary of CGI environment parameters.

  Returns:
    A tuple (method, path, headers, parameters) of the HTTP method, the
    path (minus query string), an instance of mimetools.Message with
    headers from the request, and a dictionary of parameter lists from the
    body or query string (in the form of {key :[value1, value2]}).
  """
  method = base_env_dict['REQUEST_METHOD']
  path, query = dev_appserver.SplitURL(request.relative_url)
  parameters = {}
  if method == 'POST':
    form = cgi.FieldStorage(fp=request.infile,
                            headers=request.headers,
                            environ=base_env_dict)
    for key in form:
      if key not in parameters:
        parameters[key] = []
      for value in form.getlist(key):
        parameters[key].append(value)
  elif method == 'GET':
    parameters = cgi.parse_qs(query)
  return method, path, request.headers, parameters

Убедитесь, что запрос анализируется только в GET запросах.Для POST оно должно быть в теле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...