Michael Bates
Michael Bates

Reputation: 1934

GAE users.get_current_user() returns None

I am trying to get the current user object in a Google App Engine app however it seems to be returning nothing.

I used the example code at https://github.com/takatama/gae-webapp2-auth/blob/master/handlers.py to write the user handler.

My app logs in succesfully, however get_current_user() is returning NoneType. Is it this function call is in an AJAX POST and the session is not initialised? Do I have to add a decorator somewhere?

Upvotes: 2

Views: 2045

Answers (2)

dan
dan

Reputation: 105

The problem is that the time you have registered is over, and so if youll log to google app engine with different gmail, it will work fine :)

Upvotes: 0

RocketDonkey
RocketDonkey

Reputation: 37259

The function get_current_user returns None if the user is not currently logged in. One normal way to handle this is to first call user = users.get_current_user() and then use an if block to determine if they are logged in (this example taken from the docs):

user = users.get_current_user()
if user:
    greeting = ("Welcome, %s! (<a href=\"%s\">sign out</a>)" %
                (user.nickname(), users.create_logout_url("/")))
else:
    greeting = ("<a href=\"%s\">Sign in or register</a>." %
                users.create_login_url("/"))

self.response.out.write("<html><body>%s</body></html>" % greeting)

If get_current_user() returns None, we know that the user is not logged in, so we use users.create_login_url() to create a link that will allow the user to authenticate, after which get_current_user() will return the User object for that user (did I say 'user' enough? :) ).

Upvotes: 3

Related Questions