Потребителско влизане в Parse.com - грешка 404

Аз съм доста неопитен с удостоверяването на потребителите, особено чрез спокойни apis. Опитвам се да използвам python, за да вляза с потребител, който е настроен в parse.com. Следното е кодът, който имам:

  API_LOGIN_ROOT = 'https://api.parse.com/1/login'
  params = {'username':username,'password':password}
  encodedParams = urllib.urlencode(params)

  url = API_LOGIN_ROOT + "?" + encodedParams

  request = urllib2.Request(url)

  request.add_header('Content-type', 'application/x-www-form-urlencoded')

  # we could use urllib2's authentication system, but it seems like overkill for this
  auth_header =  "Basic %s" % base64.b64encode('%s:%s' % (APPLICATION_ID, MASTER_KEY))
  request.add_header('Authorization', auth_header)
  request.add_header('X-Parse-Application-Id', APPLICATION_ID)
  request.add_header('X-Parse-REST-API-Key', MASTER_KEY)

  request.get_method = lambda: http_verb


  # TODO: add error handling for server response
  response = urllib2.urlopen(request)
  #response_body = response.read()
  #response_dict = json.loads(response_body)

Това е модификация на библиотека с отворен код, използвана за достъп до остатъка от интерфейса за анализ.

Получавам следната грешка:

Traceback (most recent call last):
  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/ext/webapp/_webapp25.py", line 703, in __call__
    handler.post(*groups)
  File "/Users/nazbot/src/PantryPal_AppEngine/fridgepal.py", line 464, in post
    url = user.login()
  File "/Users/nazbot/src/PantryPal_AppEngine/fridgepal.py", line 313, in login
    url = self._executeCall(self.username, self.password, 'GET', data)
  File "/Users/nazbot/src/PantryPal_AppEngine/fridgepal.py", line 292, in _executeCall
    response = urllib2.urlopen(request)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 126, in urlopen
    return _opener.open(url, data, timeout)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 400, in open
    response = meth(req, response)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 513, in http_response
    'http', request, response, code, msg, hdrs)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 438, in error
    return self._call_chain(*args)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 372, in _call_chain
    result = func(*args)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 521, in http_error_default
    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
HTTPError: HTTP Error 404: Not Found

Може ли някой да ме насочи къде се прецаквам? Не съм съвсем сигурен защо получавам 404 вместо отказан достъп или някакъв друг проблем.


person nazbot    schedule 19.04.2012    source източник
comment
Може да искате да опитате да използвате http://kennethreitz.com/requests-python-http-module.html вместо urlib2. Започнете да гледате това видео от 5:00 часа. Може да има някои улики за това какво не е наред с вашия код: youtu.be/Q1pe6lHZeNs   -  person alan    schedule 20.04.2012
comment
Не се нуждаете от заглавката за оторизация с REST (нито това е правилният формат) и не трябва да използвате своя главен ключ. Използвайте REST API ключа, за да ограничите достъпа на вашата заявка. Python вече не е най-силният ми език, но документите изглежда предполагат, че urlencoded параметрите под формата на x-www-form-encoded просто трябва да бъдат част от данните. Опитайте да премахнете заглавката Content-type[sic] и да създадете заявка с urllib2.Request(API_LOGIN_ROOT, encodedParams)   -  person Thomas Bouldin    schedule 25.04.2012


Отговори (2)


Уверете се, че класът „Потребител“ е създаден на Parse.com като специален потребителски клас. Когато добавяте класа, не забравяйте да промените типа на класа на „Потребител“ вместо „По избор“. Малка икона на потребителска глава ще се покаже до името на класа от лявата страна.

Това ме смущаваше дълго време, докато Мат от екипа на Parse не ми показа проблема.

person Jie Zhou    schedule 26.08.2012

Моля, променете: API_LOGIN_ROOT = 'https://api.parse.com/1/login' на следното: API_LOGIN_ROOT = 'https://api.parse.com/1/login**/**'

Имах същия проблем при използване на PHP, добавянето на / в края поправи грешката 404.

person slynx    schedule 29.03.2013