2011-10-15 25 views
6

Uygulamamda OAuth2.0 uygulamasını denedim ve şimdi düzeltemediğim bir sorunla karşılaştım.OAuth2.0 dansında "memcache" hizmeti için hiçbir api proxy bulunamadı

hatadır:

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" 

kodudur: pip aracılığıyla

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

Sadece yüklendiği google_appengine-1.5.1 modülü, benim app Django dev-sunucuda çalışan. Düzeltmek için ne yapabilirim? Bunu sadece GAE’de çalıştırmalı mıyım?

cevap

5

OAth uygulamasının GAE memcache hizmetini kullanması nedeniyle GAE'yi çalıştırmanız gerekiyor gibi görünüyor. GAE API'sına, Django sunucunuzun GAE çağrılarını işleyeceğini söylüyorsunuz. Muhtemelen GAE dev sunucusunu çalıştırmanız gerekir, böylece istekleri halledebilir.

GAE sunucusunu çalıştırmak istemiyorsanız, this blog entry, bu isteği yerine getirmek için yalnızca GAE'nin çalışmasını sağlayacak kodu gösterir.

+0

Django memcache çerçevesini kullanma şansı yok mu? – I159

+0

Her şey gauth modülünde oluyor gibi görünüyor. GAE memcache hizmetini kullanmak için bir proxy kullanıyor gibi görünüyor. – ubiquitousthey