title: NotAllowedError on front main page '/'
body: <p>I tried to set the Main Page <code>'/'</code> for users to <strong>login or not login</strong>, but I get a <code>NotAllowedError</code>. This works in the local server. However, it does not seem to work in the real public server. </p>
  
  <p>Does <code>NotAllowedError</code> mean complying to Google App Engine standards of not putting a login on the front page or maybe its something else?</p>
  
  <p>Here is the error:</p>
  
  <pre><code>Traceback (most recent call last):
    File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.5.2/webapp2.py", line 1535, in __call__
      rv = self.handle_exception(request, response, e)
    File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.5.2/webapp2.py", line 1529, in __call__
      rv = self.router.dispatch(request, response)
    File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.5.2/webapp2.py", line 1278, in default_dispatcher
      return route.handler_adapter(request, response)
    File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.5.2/webapp2.py", line 1102, in __call__
      return handler.dispatch()
    File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.5.2/webapp2.py", line 572, in dispatch
      return self.handle_exception(e, self.app.debug)
    File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.5.2/webapp2.py", line 570, in dispatch
      return method(*args, **kwargs)
    File "/base/data/home/apps/s~map-jobs/2.371277816538602179/main.py", line 294, in get
      user_url = users.create_login_url() # raise NotAllowedError
    File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/api/users.py", line 256, in create_login_url
      raise NotAllowedError
  NotAllowedError
  </code></pre>
  
  <p>Here is my <code>MainHandler</code>:</p>
  
  <pre><code>class MainHandler(BaseHandler):
    def get(self):
      user = users.get_current_user()
      logout_url = users.create_logout_url(self.request.uri)
      profile=''
      if user:
        profile = Profile.query(Profile.user_id==user.user_id())
        if profile.count() &lt;= 0:
          profile = Profile()
          profile.user_id = user.user_id()
          profile.email = user.email()
          profile.firstname = user.nickname()
          profile_key = profile.put()
        else:
          profile_key = Profile.query(Profile.user_id==user.user_id())
        profile = profile_key.get()
        current_user = 'Hello, '+ user.nickname()
        user_url = logout_url
        title = "Click to logout from Google."
      else:
        current_user = 'Google Sign in'
        user_url = users.create_login_url(self.request.uri) # raise NotAllowedError
        title = "Click to sign in with your Google Account."
      values = {
        'current_user' : current_user,
        'user_url' : user_url,
        'profile' : profile,
      }
      self.render_html('index.html',values)
  </code></pre>
  
  <p>Here is part of my <code>webapp2.WSGIApplication</code>:</p>
  
  <pre><code>app = webapp2.WSGIApplication([
    ('/', MainHandler),
  ], debug=True)
  </code></pre>
  
  <p>Here is my app.yaml:</p>
  
  <pre><code>application: map-jobs
  version: 2
  runtime: python27
  api_version: 1
  threadsafe: yes
  
  handlers:
  - url: /favicon\.ico
    static_files: favicon.ico
    upload: favicon\.ico
  
  - url: /(.*\.(gif|png|jpg|js|css|woff|ttf|svg))
    static_files: static/\1
    upload: static/(.*\.(gif|png|jpg|js|css|woff|ttf|svg))
  
  - url: /templates/.*
    script: templates.app
  
  - url: .*
    script: main.app
  
  
  libraries:
  - name: webapp2
    version: "2.5.2"
  
  - name: jinja2
    version: "2.6"
  </code></pre>