Python 从BlobstoreUploadHandler获取当前用户

Python 从BlobstoreUploadHandler获取当前用户,python,google-app-engine,google-cloud-platform,google-cloud-storage,google-cloud-endpoints,Python,Google App Engine,Google Cloud Platform,Google Cloud Storage,Google Cloud Endpoints,我想从BlobstoreUploadHandler获取当前用户。我正在为我的web应用程序使用端点,但是(在端点之外)我构建了/uploadUrl来将文件上载到Blobstore 图像上传正确。因此,我需要链接上传到用户的图像,但是用户。get\u current\u user()返回None。在前端,用户使用OAuth2登录。对这个问题有什么想法吗 如果我使用endpoints.get_current_user()引发错误: 用户环境中没有有效的终结点 这是我的代码: class Upload

我想从BlobstoreUploadHandler获取当前用户。我正在为我的web应用程序使用端点,但是(在端点之外)我构建了/uploadUrl来将文件上载到Blobstore

图像上传正确。因此,我需要链接上传到用户的图像,但是用户。get\u current\u user()返回None。在前端,用户使用OAuth2登录。对这个问题有什么想法吗

如果我使用endpoints.get_current_user()引发错误:

用户环境中没有有效的终结点

这是我的代码:

class UploadHandler(blobstore_handlers.BlobstoreUploadHandler):
    def post(self):
        upload_files = self.get_file_infos()
        file_info = upload_files[0]

        gcs_filename = file_info.gs_object_name
        file_key = blobstore.create_gs_key(gcs_filename)

        File(file=gcs_filename, owner=users.get_current_user() ).put()

在app.yaml中,您必须添加
login:required
login:admin

例如:

handlers:
- url: /upload_handler.*
  script: my_app.media_handlers.application
  login: required
在此之后,
users.get\u current\u user()
应该可以工作


关于这一点的其他线程:

每个应用程序都需要自己的登录,如果要在代码中使用用户类,每个类都需要导入和声明用户

从google.appengine.api导入用户 导入webapp2

class MyHandler(webapp2.RequestHandler):
    def get(self):
        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)
类MyHandler(webapp2.RequestHandler):
def get(自我):
user=users.get\u current\u user()
如果用户:
问候语=(“欢迎,%s!()”%
(user.昵称(),users.create_logout_url('/'))
其他:
问候语=('.'%
用户。创建\u登录\u url('/'))
self.response.out.write(“%s”%greeting)

有关更多详细信息,请参阅本文-

Lepi,是的,我看过。但现在说“请求失败,因为URL需要用户登录”。但用户是从OAuth2登录的。我能做什么?您使用的是
login:admin
还是
login:required
?如果它是管理员,那么请确保您是此应用程序的管理员,而不仅仅是简单用户。如果您使用的是simple
login:required
,那么我现在没有其他想法。