'Redirects the user to obtain OAuth authorization for this service.
The ``callback_uri`` may be omitted if you have previously
registered a callback URI with the third-party service.  For
some services (including Friendfeed), you must use a
previously-registered callback URI and cannot specify a
callback via this method.
This method sets a cookie called ``_oauth_request_token`` which is
subsequently used (and cleared) in `get_authenticated_user` for
security purposes.
Note that this method is asynchronous, although it calls
`.RequestHandler.finish` for you so it may not be necessary
to pass a callback or use the `.Future` it returns.  However,
if this method is called from a function decorated with
`.gen.coroutine`, you must call it with ``yield`` to keep the
response from being closed prematurely.
.. versionchanged:: 3.1
Now returns a `.Future` and takes an optional callback, for
compatibility with `.gen.coroutine`.'

@return_future
def authorize_redirect(self, callback_uri=None, extra_params=None, http_client=None, callback=None):

    if (callback_uri and getattr(self, '_OAUTH_NO_CALLBACKS', False)):
        raise Exception('This    service    does    not    support    oauth_callback')
    if (http_client is None):
        http_client = self.get_auth_http_client()
    if (getattr(self, '_OAUTH_VERSION', '1.0a') == '1.0a'):
        http_client.fetch(self._oauth_request_token_url(callback_uri=callback_uri, extra_params=extra_params), functools.partial(self._on_request_token, self._OAUTH_AUTHORIZE_URL, callback_uri, callback))
    else:
        http_client.fetch(self._oauth_request_token_url(), functools.partial(self._on_request_token, self._OAUTH_AUTHORIZE_URL, callback_uri, callback))
