0

我对用户身份验证相当缺乏经验,尤其是通过 restful api。我正在尝试使用 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)

这是对用于访问 parse rest 接口的开源库的修改。

我收到以下错误:

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 而不是访问被拒绝或其他问题。

4

2 回答 2

1

确保在 Parse.com 上创建了“用户”类作为特殊用户类。添加类时,请确保将类类型更改为“用户”而不是“自定义”。一个小的用户头像图标将显示在左侧的类名旁边。

这让我困惑了很长时间,直到 Parse 团队的 Matt 向我展示了这个问题。

于 2012-08-26T23:13:59.677 回答
0

请将:更改API_LOGIN_ROOT = 'https://api.parse.com/1/login'为以下内容:API_LOGIN_ROOT = 'https://api.parse.com/1/login**/**'

我在使用时遇到了同样的问题,在最后PHP添加了404错误。/

于 2013-03-29T15:18:42.560 回答