2011-10-15 18 views
6

Estoy intentando implementar OAuth2.0 en mi aplicación y tengo un problema que no puedo solucionar ahora.No se ha encontrado un proxy de API para el servicio "Memcache" en OAuth2.0 dance

El error es:

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" 

El código es:

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('/') 

Me acabo de instalar el módulo google_appengine-1.5.1 a través de la pipa, mi aplicación que se ejecuta en Django dev-servidor. ¿Que puedo hacer para arreglarlo? ¿Debo ejecutarlo solo en GAE?

Respuesta

5

Parece que necesita ejecutar GAE porque la implementación OAth utiliza el servicio de Memcache de GAE. Le está diciendo a GAE API que su servidor Django manejará las llamadas GAE. Probablemente necesite ejecutar el servidor de desarrollo GAE para que pueda manejar las solicitudes.

Si no desea ejecutar el servidor GAE, parece que this blog entry muestra el código para obtener el GAE suficiente para ejecutar esta solicitud.

+0

¿No tiene posibilidad de utilizar el marco de memcache de Django? – I159

+0

Parece que todo está sucediendo dentro del módulo Gauth. Parece que usa un proxy para usar el servicio Memcache de GAE. – ubiquitousthey

Cuestiones relacionadas