2011-10-15 11 views
6

Próbuję zaimplementować OAuth2.0 do mojej aplikacji i mam problem, którego nie mogę teraz naprawić.Nie znaleziono api proxy dla usługi "memcache" w tańcu OAuth2.0

Błąd jest:

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" 

Kod jest:

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

właśnie zainstalowana google_appengine-1.5.1 Moduł poprzez pip, moja aplikacja działa na Django dev-serwer. Co mogę zrobić, aby to naprawić? Czy powinienem uruchomić go tylko na GAE?

Odpowiedz

5

Wygląda na to, że trzeba uruchomić GAE, ponieważ implementacja OAth korzysta z usługi memcache GAE. Mówisz API GAE, że twój serwer Django będzie obsługiwał połączenia GAE. Prawdopodobnie musisz uruchomić serwer deweloperów GAE, aby mógł obsłużyć żądania.

Jeśli nie chcesz uruchamiać serwera GAE, wygląda na to, że this blog entry pokazuje kod wystarczający do uruchomienia GAE w celu obsłużenia tego żądania.

+0

Więc nie ma szansy na wykorzystanie frameworka memcache Django? – I159

+0

Wygląda na to, że wszystko dzieje się wewnątrz modułu Gautha. Wygląda na to, że używa proxy do korzystania z usługi memcache GAE. – ubiquitousthey