2011-10-15 31 views
6

Tôi đang cố gắng triển khai OAuth2.0 cho ứng dụng của mình và tôi gặp sự cố mà hiện tại tôi không thể khắc phục được.Không tìm thấy proxy api nào cho dịch vụ "memcache" trong điệu nhảy OAuth2.0

Lỗi này là:

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" 

Mã này là:

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

Tôi đã chỉ cần cài đặt google_appengine-1.5.1 Module qua pip, ứng dụng của tôi chạy trên Django dev-server. Tôi có thể làm gì để sửa chữa nó? Tôi có nên chạy nó trên GAE không?

Trả lời

5

Có vẻ như bạn cần chạy GAE vì triển khai OAth sử dụng dịch vụ memcache GAE. Bạn đang nói với API GAE rằng máy chủ Django của bạn sẽ xử lý các cuộc gọi GAE. Bạn có thể cần phải chạy máy chủ GAE dev để nó có thể xử lý các yêu cầu.

Nếu bạn không muốn chạy máy chủ GAE, có vẻ như this blog entry hiển thị mã để có đủ GAE chạy để phục vụ yêu cầu này.

+0

Vì vậy, không có cơ hội sử dụng khung công tác memcache Django? – I159

+0

Có vẻ như tất cả đều diễn ra bên trong mô-đun gauth. Có vẻ như nó sử dụng proxy để sử dụng dịch vụ memcache GAE. – ubiquitousthey

Các vấn đề liên quan