Python 从BlobstoreUploadHandler获取当前用户
我想从BlobstoreUploadHandler获取当前用户。我正在为我的web应用程序使用端点,但是(在端点之外)我构建了/uploadUrl来将文件上载到Blobstore 图像上传正确。因此,我需要链接上传到用户的图像,但是用户。get\u current\u user()返回None。在前端,用户使用OAuth2登录。对这个问题有什么想法吗 如果我使用endpoints.get_current_user()引发错误: 用户环境中没有有效的终结点 这是我的代码: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
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
?如果它是管理员,那么请确保您是此应用程序的管理员,而不仅仅是简单用户。如果您使用的是simplelogin:required
,那么我现在没有其他想法。