Hi, This should be discussed on http://groups.google.com/group/google-api-python-client as this is not specific to Google App Engine.
Thanks in advance. On Mon, Jun 20, 2011 at 2:51 PM, GAE app developer <rohit.ba...@gmail.com> wrote: > from oauth2client.appengine import OAuth2Decorator > > decorator = OAuth2Decorator( > client_id='<YOUR CLIENT ID HERE>', > client_secret='<YOUR CLIENT SECRET HERE>', > scope='https://www.googleapis.com/auth/buzz', > user_agent='buzz-appengine-sample/1.0') > > http = httplib2.Http(memcache) > service = build("buzz", "v1", http=http) > > class MainHandler(webapp.RequestHandler): > > @decorator.oauth_required > def get(self): > http = decorator.http() > activities = service.activities() > activitylist = activities.list(scope='@consumption', > userId='@me').execute(http) > ... > > def main(): > application = webapp.WSGIApplication( > [ > ('/', MainHandler), > ], > debug=True) > util.run_wsgi_app(application) > > This is the OAuth Decorator code. In this @decorator.oauth_required > gets executed, the problem is it does not go inside get function. So > how to do it. > > What to put in @consumption and @me in the below line > activitylist = activities.list(scope='@consumption', > userId='@me').execute(http) > > Please help > > On Jun 20, 3:47 pm, Johan Euphrosine <pro...@google.com> wrote: >> You have to use moderator scope:https://www.googleapis.com/auth/moderator >> >> As explained in the Moderator API >> documentation:http://code.google.com/apis/moderator/v1/using_rest.html >> >> >> >> >> >> >> >> >> >> On Mon, Jun 20, 2011 at 11:27 AM, Saurabh S <ggtestlo...@gmail.com> wrote: >> > Thanks Johan,that error has been resolved. >> >> > Now after that it says invalid scope. >> > Error:OAuth 2.0 error: invalid_scope >> >> > Is there any particular URL for scope or I have to manually enter a >> > url on a particular basis >> >> > Can you please provide information on this >> >> > On Jun 20, 12:35 pm, Johan Euphrosine <pro...@google.com> wrote: >> >> Hi Rohit, >> >> >> If you are running dev_appserver.py, >> >> >> make sure the list of Redirect URIs in theGoogleAPIs Console/Api >> >> access section:https://code.google.com/apis/console/ >> >> >> Contains:http://localhost:8080/oauth2callback >> >> >> Note http:// not https://. >> >> >> If you are running the deployed version, make sure it >> >> contains:https://myappid.appspot.com/oauth2callbackhttp://myappid.appspot.com/... >> >> >> Or both depending if you enforce SSL if you application. >> >> >> Hope that helps. >> >> >> On Mon, Jun 20, 2011 at 8:49 AM, GAEappdeveloper >> >> >> <rohit.ba...@gmail.com> wrote: >> >> > Thanks Johan >> >> > Even though I have signed in using my Gmail account it does not seem >> >> > to make any difference. It is displaying the same error. >> >> >> > And also i tried using the oauthdecorator >> >> > 1. when I click on yes or no button for a particular submission it >> >> > requests for login and after I sign in it displays this error: >> >> > OAuth 2.0 error: redirect_uri_mismatch >> >> > The redirect URI in the request did not match a registered redirect >> >> > URI >> >> >> > Can you please tell why this error appears and how to solve this >> >> > On Jun 18, 4:17 am, Johan Euphrosine <pro...@google.com> wrote: >> >> >> get_current_user() could return None has documented here, if no user >> >> >> is logged >> >> >> in:http://code.google.com/appengine/docs/python/users/functions.html >> >> >> >> You could also take a look at the new OAuth2Decorator in >> >> >>google-api-python-client that make dealing with OAuth 2.0 >> >> >>easier:http://code.google.com/p/google-api-python-client/wiki/OAuth2AppEngin... >> >> >> >> I just published an article on how to use it withGoogleTasks API, >> >> >> but that should be easy to translate to Moderator >> >> >> API:http://googleappengine.blogspot.com/2011/06/getting-started-with-task... >> >> >> >> On Fri, Jun 17, 2011 at 2:45 PM, GAEappdeveloper >> >> >> >> <rohit.ba...@gmail.com> wrote: >> >> >> > Hi, >> >> >> >> > I am developing anGoogleappengineapplication using Moderator API >> >> >> > in python. I am able to retrieve the submissions. I am having an >> >> >> >authenticationproblem. My code runs locally without anyproblembut >> >> >> > when I deploy it inGoogleappenginelauncher. It shows the following >> >> >> > error: >> >> >> >> > 'NoneType' object has no attribute 'user_id' >> >> >> > Traceback (most recent call last): >> >> >> > File "/base/python_runtime/python_lib/versions/1/google/appengine/ >> >> >> > ext/webapp/__init__.py", line 700, in __call__ >> >> >> > handler.get(*groups) >> >> >> > File "/base/data/home/apps/ktbookstore/3.351197542995528852/ >> >> >> > retrieve_list_unique.py", line 107, in get >> >> >> > f = Flow.get_by_key_name(user.user_id()) >> >> >> > AttributeError: 'NoneType' object has no attribute 'user_id' >> >> >> >> > My code is: >> >> >> >> > import gflags >> >> >> > import httplib2 >> >> >> > import logging >> >> >> > import pprint >> >> >> > import sys >> >> >> > import os >> >> >> > import cgi >> >> >> > import pickle >> >> >> >> > from apiclient.discovery import build >> >> >> > from oauth2client.file import Storage >> >> >> > from oauth2client.client import AccessTokenRefreshError >> >> >> > from oauth2client.client import OAuth2WebServerFlow >> >> >> > from oauth2client.tools import run >> >> >> > fromgoogle.appengine.ext import webapp >> >> >> > fromgoogle.appengine.ext.webapp import template >> >> >> > fromgoogle.appengine.ext.webapp.util import run_wsgi_app >> >> >> > fromgoogle.appengine.ext import db >> >> >> > fromgoogle.appengine.api import users >> >> >> > from oauth2client.appengine import CredentialsProperty >> >> >> > from oauth2client.appengine import StorageByKeyName >> >> >> > fromgoogle.appengine.ext.webapp.util import login_required >> >> >> > fromgoogle.appengine.api import memcache >> >> >> > from oauth2client.appengine import FlowProperty >> >> >> >> > FLAGS = gflags.FLAGS >> >> >> >> > FLOW = OAuth2WebServerFlow( >> >> >> > client_id='My client id', >> >> >> > client_secret='my client_secret', >> >> >> > scope='https://www.example.com/oauth2callback', >> >> >> > user_agent='moderator-cmdline-sample/1.0') >> >> >> >> > gflags.DEFINE_enum('logging_level', 'ERROR',['DEBUG', 'INFO', >> >> >> > 'WARNING', 'ERROR', 'CRITICAL'],'Set the level of logging detail.') >> >> >> >> > class Flow(db.Model): # FlowThreeLegged could also be stored in >> >> >> > memcache. >> >> >> > flow = FlowProperty() >> >> >> >> > class Credentials(db.Model): >> >> >> > credentials = CredentialsProperty() >> >> >> >> > class ModPage(webapp.RequestHandler): >> >> >> > def get(self): >> >> >> > # Let the gflags module process the command-line arguments >> >> >> >> > service = build("moderator", "v1", developerKey='my developer >> >> >> > key') >> >> >> >> > class voteUpdate(webapp.RequestHandler): >> >> >> > def get(self): >> >> >> > user = users.get_current_user() >> >> >> > logging.info(user) >> >> >> > f = Flow.get_by_key_name(user.user_id()) >> >> >> > if f: >> >> >> > credentials = f.flow.step2_exchange(self.request.params) >> >> >> > c = Credentials(key_name=user.user_id(), >> >> >> > credentials=credentials) >> >> >> > c.put() >> >> >> > f.delete() >> >> >> > self.redirect("/") >> >> >> > else: >> >> >> > pass >> >> >> > user = users.get_current_user() >> >> >> > c = Credentials.get_by_key_name(user.user_id()) >> >> >> > if c: >> >> >> > http = httplib2.Http() >> >> >> > http = c.credentials.authorize(http) >> >> >> > else: >> >> >> > flow = FlowThreeLegged( >> >> >> > consumer_key='', >> >> >> > consumer_secret='anonymous', >> >> >> > user_agent='google-api-client-python- >> >> >> > moderator-webapp/1.0', >> >> >> > domain='anonymous', >> >> >> > scope='https://www.googleapis.com/auth/ >> >> >> > moderator', >> >> >> > xoauth_displayname='Example WebApp') >> >> >> > authorize_url = flow.step1_get_authorize_url(STEP2_URI) >> >> >> > f = Flow(key_name=user.user_id(), flow=flow) >> >> >> > f.put() >> >> >> > self.redirect(authorize_url) >> >> >> >> > service = build("moderator", "v1", http=http,developerKey='my >> >> >> > developer key') >> >> >> >> > minus=self.request.get("Minus") >> >> >> > if minus=="": >> >> >> > self.response.out.write("plus") >> >> >> > #code which will increment plus vote counter by 1 >> >> >> > else: >> >> >> > self.response.out.write("minus") >> >> >> > #code which will increment minus vote counter by 1 >> >> >> >> > application = webapp.WSGIApplication([ >> >> >> > ('/', ModPage),('/vote',voteUpdate) >> >> >> > ], debug=True) >> >> >> >> > def main(): >> >> >> > run_wsgi_app(application) >> >> >> >> > if __name__ == '__main__': >> >> >> > main() >> >> >> >> > Please help me in finding the solution. >> >> >> >> > -- >> >> >> > You received this message because you are subscribed to >> >> >> > theGoogleGroups "GoogleAppEngine" group. >> >> >> > To post to this group, send email >> >> >> > togoogle-appeng...@googlegroups.com. >> >> >> > To unsubscribe from this group, send email >> >> >> > togoogle-appengine+unsubscr...@googlegroups.com. >> >> >> > For more options, visit this group >> >> >> > athttp://groups.google.com/group/google-appengine?hl=en. >> >> >> >> -- >> >> >> Johan Euphrosine (proppy) >> >> >> Developer Programs Engineer >> >> >>GoogleDeveloper Relations >> >> >> > -- >> >> > You received this message because you are subscribed to theGoogleGroups >> >> > "GoogleAppEngine" group. >> >> > To post to this group, send email togoogle-appeng...@googlegroups.com. >> >> > To unsubscribe from this group, send email >> >> > togoogle-appengine+unsubscr...@googlegroups.com. >> >> > For more options, visit this group >> >> > athttp://groups.google.com/group/google-appengine?hl=en. >> >> >> -- >> >> Johan Euphrosine (proppy) >> >> Developer Programs EngineerGoogleDeveloper Relations >> >> > -- >> > You received this message because you are subscribed to theGoogleGroups >> > "GoogleAppEngine" group. >> > To post to this group, send email togoogle-appeng...@googlegroups.com. >> > To unsubscribe from this group, send email >> > togoogle-appengine+unsubscr...@googlegroups.com. >> > For more options, visit this group >> > athttp://groups.google.com/group/google-appengine?hl=en. >> >> -- >> Johan Euphrosine (proppy) >> Developer Programs EngineerGoogleDeveloper Relations > > -- > You received this message because you are subscribed to the Google Groups > "Google App Engine" group. > To post to this group, send email to google-appengine@googlegroups.com. > To unsubscribe from this group, send email to > google-appengine+unsubscr...@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/google-appengine?hl=en. > > -- Johan Euphrosine (proppy) Developer Programs Engineer Google Developer Relations -- You received this message because you are subscribed to the Google Groups "Google App Engine" group. To post to this group, send email to google-appengine@googlegroups.com. To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.