私はかなり落ち着いたapisを通じて、特にユーザー認証で経験が浅いです。私はPythonを使用して、parse.comに設定されているユーザーでログインしようとしています。以下は、私が持っているコードです:Parse.comユーザーログイン - 404エラー
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になっているのはなぜか分かりません。
urlib2ではなくhttp://kennethreitz.com/requests-python-http-module.htmlを試してみてください。このビデオを5時マークで見始める。あなたのコードに何が間違っているかについていくつかの手掛かりがあるかもしれません:http://youtu.be/Q1pe6lHZeNs – alan
あなたはRESTでAuthorizationヘッダーを必要としません(これも正しいフォーマットです)。マスターキー。リクエストのアクセスを制限するには、REST APIキーを使用します。 Pythonはもはや私の最強の言語ではありませんが、ドキュメントでは、x-www-form-encodedの形式のurlencoded paramsはデータの一部でなければならないことを示唆しています。 "Content-type" [sic]ヘッダーを削除し、urllib2.Request(API_LOGIN_ROOT、encodedParams)でリクエストをインスタンス化してみてください。 –