在webapp2中获取Python Google Users的查询返回None

时间:2019-05-03 12:18:04

标签: javascript python google-app-engine google-cloud-datastore webapp2

我正在尝试使用基于React的前端连接到使用Python和Google App Engine由webapp2托管的某些终结点。对于初始身份验证页面,我使用的是Google Users API。由于某种原因,我可以在本地开发服务器上写出用户的信息,但是无法使用Javascript的Fetch API检索它,因为当我尝试这样做时,它会返回None。

我尝试将用户写为字符串,但是无论返回什么都不返回。

这是Python代码:

def get(self):
        user = users.get_current_user()
        logout_url = users.create_logout_url('/')
        login_url = users.create_login_url('/')
        if user:
            greeting = ('Welcome, %s! (<a href="%s">sign out</a>)' %
                (user.email(), logout_url))
        else:
            greeting = ('<a href="%s">Sign in or register</a>.' % login_url)

        if users.get_current_user():
            us = users.get_current_user().email()
            us = User.query(User.email == us).fetch()

            if us:
                pass
            else:
                us = User(
                    email= users.get_current_user().email(),
                    posts=[]
                )
                us.put()

        vars = {
            'data': user,
            'greeting': greeting
        }
        self.response.headers['Content-Type'] = 'application/json'
        self.response.headers.add_header('Access-Control-Allow-Origin', '*')
        self.response.headers.add_header('Access-Control-Allow-Headers', 'Content-Type')
        self.response.write(vars)

例如,当我访问http://localhost:8080时,我将得到响应{'data': users.User(email='i@example.com',_user_id='14123123123'), 'greeting': 'Welcome, i@example.com! (sign out)'}

但是,当我尝试获取它时,

const fatch = () => fetch('http://localhost:8080')
  .then(data => console.log(data.text()))
  .catch((error) => console.log(error))

我将收到一个没有用户信息的回复:

{'data': None, 'greeting': '<a href="/_ah/login?co…3A//localhost%3A8080/">Sign in or register</a>.'}

任何帮助将不胜感激。谢谢!

0 个答案:

没有答案