class_docstr: Abstract implementation of OAuth 2.0.
  
  See `FacebookGraphMixin` or `GoogleOAuth2Mixin` below for example
  implementations.
  
  Class attributes:
  
  * ``_OAUTH_AUTHORIZE_URL``: The service's authorization url.
  * ``_OAUTH_ACCESS_TOKEN_URL``:  The service's access token url.
class_docstr_tok: ["Abstract","implementation","of","OAuth","2.0",".","See","`","FacebookGraphMixin","`","or","`","GoogleOAuth2Mixin","`","below","for","example","implementations",".","Class","attributes",":","*","``","_OAUTH_AUTHORIZE_URL","``",":","The","service","'s","authorization","url",".","*","``","_OAUTH_ACCESS_TOKEN_URL","``",":","The","service","'s","access","token","url","."]
code: def _oauth_request_token_url(
      self,
      redirect_uri=None,
      client_id=None,
      client_secret=None,
      code=None,
      extra_params=None,
  ):
      url = self._OAUTH_ACCESS_TOKEN_URL
      args = dict(
          redirect_uri=redirect_uri,
          code=code,
          client_id=client_id,
          client_secret=client_secret,
      )
      if extra_params:
          args.update(extra_params)
      return url_concat(url, args)
  
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 2 for calling the OAuth2Mixin obj's underlying member method code with example usage: obj._oauth_request_token_url(redirect_uri, client_id, client_secret, code, extra_params) and returns: url_concat