我有以下代码(取自facebook-sdk appengine 示例):
class BaseHandler(webapp2.RequestHandler):
@property
def current_user(self):
if not hasattr(self, "_current_user"):
self._current_user = None
cookie = facebook.get_user_from_cookie(
self.request.cookies, FACEBOOK_APP_ID, FACEBOOK_APP_SECRET)
if cookie:
user = User.get_by_key_name(cookie["uid"])
if not user:
graph = facebook.GraphAPI(cookie["access_token"])
profile = graph.get_object("me")
user = User(key_name=str(profile["id"]), ...)
user.put()
elif user.access_token != cookie["access_token"]:
user.access_token = cookie["access_token"]
user.put()
self._current_user = user
return self._current_user
项目中包含的 Google App Engine 示例对每个请求调用 get_user_from_cookie,现在它向 Facebook 发送请求。该示例应缓存返回的访问令牌,以免发生这种情况。
我该如何解决这个问题?我担心的一个问题是,如果我将它们存储在会话中,我怎么知道访问令牌是有效的?