class_docstr: Facebook authentication using the new Graph API and OAuth2.
class_docstr_tok: ["Facebook","authentication","using","the","new","Graph","API","and","OAuth2","."]
code: def _on_get_user_info(self, future, session, fields, user):
      if user is None:
          future.set_result(None)
          return
  
      fieldmap = {}
      for field in fields:
          fieldmap[field] = user.get(field)
  
      # session_expires is converted to str for compatibility with
      # older versions in which the server used url-encoding and
      # this code simply returned the string verbatim.
      # This should change in Tornado 5.0.
      fieldmap.update(
          {
              "access_token": session["access_token"],
              "session_expires": str(session.get("expires_in")),
          }
      )
      future.set_result(fieldmap)
  
imports: from __future__ import absolute_import, division, print_function
  import base64
  import binascii
  import functools
  import hashlib
  import hmac
  import time
  import uuid
  from tornado.concurrent import TracebackFuture, return_future, chain_future
  from tornado import gen
  from tornado import httpclient
  from tornado import escape
  from tornado.httputil import url_concat
  from tornado.log import gen_log
  from tornado.stack_context import ExceptionStackContext
  from tornado.util import unicode_type, ArgReplacer, PY3
label_desc: Use image node_id 3 for calling the FacebookGraphMixin obj's underlying member method code with example usage: obj._on_get_user_info(future, session, fields, user) without return types