如何在GAE任务队列中执行需要OAuth的 *** 作?

如何在GAE任务队列中执行需要OAuth的 *** 作?,第1张

如何在GAE任务队列中执行需要OAuth的 *** 作?

由于“任务队列”任务将由您的应用程序生成,因此原始请求中的任何标头都不会通过发送。特别是,

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


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5508269.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-13
下一篇 2022-12-13

发表评论

登录后才能评论

评论列表(0条)

保存