Marco de Tornado (FacebookGraphMixin)

Quería intentar enviar la solicitud de la aplicación desde mi aplicación de Facebook a un usuario utilizando Tornado Framework. Estaba siguiendo http://www.tornadoweb.org/documentation/auth.html pero no tengo idea de cómo resolver este error. ¿Algún profesional por ahí? ¡Gracias!

Registro de errores

Traceback (most recent call last): File "send.py", line 36, in  main() File "send.py", line 33, in main test.get(app_access_token, player_id) File "send.py", line 15, in get callback=self.async_callback(self._on_post)) AttributeError: 'Send' object has no attribute 'async_callback' 

Código

 import tornado.auth import tornado.escape import tornado.httpserver import tornado.ioloop import tornado.options import tornado.web from tornado import httpclient class Send(tornado.auth.FacebookGraphMixin): def get(self, app_access_token, player_id): self.facebook_request( "/"+player_id+"/apprequests", post_args={"message": "I am an app request from my Tornado application!"}, access_token=app_access_token, callback=self.async_callback(self._on_post)) def _on_post(self, new_entry): if not new_entry: # Call failed; perhaps missing permission? self.authorize_redirect() return self.finish("Posted a message!") def main(): key = "xxxxxxxxxxx" secret = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx" player_id = "100003395454290" #fake id http_client = httpclient.HTTPClient() response = http_client.fetch("https://graph.facebook.com/oauth/access_token?grant_type=client_credentials&client_id="+key+"&client_secret="+secret+"&redirect_uri=&code=") app_access_token = response.body.replace("access_token=","") test = Send() test.get(app_access_token, player_id) if __name__ == "__main__": main() 

Bueno, mi respuesta no responde directamente a la pregunta del OP. Pero como se muestra en los resultados de búsqueda principales para el error AttributeError: 'XxxxxHandler' object has no attribute 'async_callback'

Vale la pena señalar que al iniciar Tornado v4.0, la función async_callback se ha eliminado. Para citar las notas de compatibilidad con versiones anteriores :

Se han eliminado las funciones de reiniciador RequestHandler.async_callback y WebSocketHandler.async_callback ; Han estado obsoletos durante mucho tiempo debido a los contextos de stack (y más recientemente a las coroutinas).

Parece que olvidaste la subclase tornado.web.RequestHandler . Cambio:

 class Send(tornado.auth.FacebookGraphMixin): 

A:

 class Send(tornado.web.RequestHandler, tornado.auth.FacebookGraphMixin):