由于“任务队列”任务将由您的应用程序生成,因此原始请求中的任何标头都不会通过发送。特别是,
cookies标头通过
SACSID应用程序的cookie标识您的用户(由App
Engine用户API提供)。
更新:(在原始帖子之后添加了此内容。)* 由于没有cookie,因此SACSID
标识用户的cookie不会在那里,因此, 每次
cron作业运行时,该decorator.oauth_required
名称将强制进行重定向(即HTTP 302
)。 *
您最好不要将App Engine用户ID传递给任务,而不是尝试从装饰器获取当前用户。首先获取当前用户(在您的修饰方法内):
from google.appengine.api import users# Guaranteed not to be None by the decoratorcurrent_user = users.get_current_user()
然后在任务中传递App Engine用户ID
import urllibquery_string = urllib.urlenpre({'user_id': current_user.user_id()})taskqueue.add(url='/updateworker?' + query_string)
然后在您的任务中,您可以检索到
user_id
# This is the 'user_id' you appended in the query stringuser_id = self.request.get('user_id')
并像装饰器中一样使用它来获取该用户的凭据:
from oauth2client.appengine import CredentialsModelfrom oauth2client.appengine import StorageByKeyName# This assumes you are using the defaults for OAuth2Decorator,# which your above pre iscredentials = StorageByKeyName( CredentialsModel, user_id, 'credentials').get()
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)