2011-10-15 10 views
6

में सेवा "memcache" के लिए कोई एपीआई प्रॉक्सी नहीं मिली है, मैं अपने ऐप में OAuth2.0 को लागू करने की कोशिश कर रहा हूं और मुझे एक समस्या मिली है, जिसे मैं अभी ठीक नहीं कर सकता।OAuth2.0 नृत्य

त्रुटि है:

Traceback: 
File "/home/i159/Envs/photorulez/lib/python2.6/site- packages/django/core/handlers/base.py" in get_response 
111.       response = callback(request, *callback_args, **callback_kwargs) 
File "/home/i159/workspace/photorulez/photorulez/photoapp/views.py" in get_token 
63.  saved_token = gdata.gauth.AeLoad(request.GET.get('oauth_token')) 
File "/home/i159/Envs/photorulez/lib/python2.6/site-packages/gdata/gauth.py" in ae_load 
1289. token_string = gdata.alt.app_engine.get_token(key_name) 
File "/home/i159/Envs/photorulez/lib/python2.6/site-packages/gdata/alt/app_engine.py" in get_token 
51. token_string = memcache.get(unique_key) 
File "/home/i159/Envs/photorulez/lib/python2.6/site- packages/google/appengine/api/memcache/__init__.py" in get 
487.  self._make_sync_call('memcache', 'Get', request, response) 
File "/home/i159/Envs/photorulez/lib/python2.6/site-packages/google/appengine/api/apiproxy_stub_map.py" in MakeSyncCall 
94. return stubmap.MakeSyncCall(service, call, request, response) 
File "/home/i159/Envs/photorulez/lib/python2.6/site-packages/google/appengine/api/apiproxy_stub_map.py" in MakeSyncCall 
301.  assert stub, 'No api proxy found for service "%s"' % service 

Exception Type: AssertionError at /get_access_token/ 
Exception Value: No api proxy found for service "memcache" 

कोड है:

CONSUMER_KEY = 'anonymous' 
CONSUMER_SECRET = 'anonymous' 
SCOPES = ['https://picasaweb.google.com/data/',] 

def oauth2_login(request): 
    client = gdata.docs.client.DocsClient(source='photorulez') 

    oauth_callback_url = 'http://%s/get_access_token' % '127.0.0.1:8000' 

    request_token = client.GetOAuthToken(
     SCOPES, 
     oauth_callback_url, 
     CONSUMER_KEY, 
     consumer_secret=CONSUMER_SECRET) 

    request.session['request_token'] = request_token 
    return HttpResponseRedirect(request_token.generate_authorization_url()) 


def get_token(request): 
    client = gdata.docs.client.DocsClient(source='photorulez') 
    saved_token = gdata.gauth.AeLoad(request.GET.get('oauth_token')) 
    uri = 'http://127.0.0.1:8000' 

    request_token = gdata.gauth.AuthorizeRequestToken(
     saved_token, 
     uri)  
    access_token = client.GetAccessToken(request_token) 

    client.auth_token = gdata.gauth.OAuthHmacToken(CONSUMER_KEY, 
     CONSUMER_SECRET, 
     access_token.token, 
     access_token.token_secret, 
     gdata.gauth.ACCESS_TOKEN) 
    return HttpResponseRedirect('/') 

मैं सिर्फ स्थापित किया गया था google_appengine-1.5.1 पिप के माध्यम से मॉड्यूल, मेरे ऐप Django देव-सर्वर पर चल रहा। इसे ठीक करने के लिए मुझे क्या करना होगा? क्या मुझे इसे केवल जीएई पर चलाना चाहिए?

उत्तर

5

ऐसा लगता है कि आपको GAE चलाने की आवश्यकता है क्योंकि ओएथ कार्यान्वयन GAE memcache सेवा का उपयोग करता है। आप जीएई एपीआई बता रहे हैं कि आपका डीजेगो सर्वर जीएई कॉल को संभालेगा। आपको शायद GAE dev सर्वर चलाने की आवश्यकता है ताकि यह अनुरोधों को संभाल सके।

यदि आप GAE सर्वर नहीं चलाना चाहते हैं, तो ऐसा लगता है कि this blog entry इस अनुरोध की सेवा करने के लिए पर्याप्त जीएई चलाने के लिए कोड दिखाता है।

+0

तो क्या इसके पास Django memcache ढांचे का उपयोग करने का कोई मौका नहीं है? – I159

+0

ऐसा लगता है कि यह सब गौथ मॉड्यूल के अंदर हो रहा है। ऐसा लगता है कि यह GAE memcache सेवा का उपयोग करने के लिए प्रॉक्सी का उपयोग करता है। – ubiquitousthey

संबंधित मुद्दे