I trying to implement OAuth2.0 to my app and I got a problem, which I can't fix now.
The error is:
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"
The code is:
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('/')
I was just installed google_appengine-1.5.1 module via pip, my app running on Django dev-server. What can I do to fix it? Should I run it only on GAE?
Looks like you need to be running GAE because the OAth implementation uses the GAE memcache service. You are telling the GAE API that your Django server will handle the GAE calls. You probably need to be running the GAE dev server so that it can handle the requests.
If you don't want to run the GAE server, it looks like this blog entry shows the code to get just enough of GAE running to service this request.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With