私は次のコードを持っています(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
問題#23で説明されている正確な問題があります
プロジェクトに含まれているGoogleAppEngineの例では、リクエストごとにget_user_from_cookieが呼び出され、Facebookにリクエストが送信されます。この例では、返されたアクセストークンをキャッシュして、これが発生しないようにする必要があります。
どうすればこれを解決できますか?私が抱えている懸念の1つは、それらをセッションに保存する場合、アクセストークンが有効であることをどのように知ることができるかということです。