0

我想從BlobstoreUploadHandler獲取當前用戶。我爲我的Web應用程序使用端點,但是(在端點之外)我構建/ uploadUrl將文件上載到Blobstore。從BlobstoreUploadHandler獲取當前用戶

圖像上傳正確。所以,我需要鏈接上傳到用戶的圖片,但users.get_current_user()返回無。在前端,用戶使用OAuth2登錄。任何想法這個問題?

如果我使用endpoints.get_current_user()引發錯誤:

No valid endpoints user in environment

這是我的代碼:

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() 

回答

0
在你的app.yaml

必須添加login: requiredlogin: admin

例子:

handlers: 
- url: /upload_handler.* 
    script: my_app.media_handlers.application 
    login: required 

在此之後,users.get_current_user()應該工作。

https://cloud.google.com/appengine/docs/python/config/appconfig#Python_app_yaml_Requiring_login_or_administrator_status

這個其他線程:Google App Engine get_current_user always return None, even if i'm logged

+0

的LePI,是的,我做到了。但現在說「請求失敗,因爲URL需要用戶登錄」。但用戶從OAuth2登錄。我可以做什麼? – 2014-12-05 20:17:41

+0

你使用'login:admin'還是'login:required'?如果它是管理員,那麼確保你是這個應用程序的管理員,而不僅僅是一個簡單的用戶。如果你使用簡單的'login:required',那麼我現在就沒有其他想法了。 – Lepi 2014-12-05 20:25:40

1

每個應用程序都需要自己的登錄名,每類都需要,如果你想使用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) 

欲瞭解更多詳細信息,請參閱本文 - https://cloud.google.com/appengine/docs/python/users/