'Redirects the user to obtain OAuth authorization for this service.
Some providers require that you register a redirect URL with
your application instead of passing one via this method. You
should call this method to log the user in, and then call
``get_authenticated_user`` in the handler for your
redirect URL to complete the authorization process.
.. versionchanged:: 3.1
Returns a `.Future` and takes an optional callback.  These are
not strictly necessary as this method is synchronous,
but they are supplied for consistency with
`OAuthMixin.authorize_redirect`.'

@return_future
def authorize_redirect(self, redirect_uri=None, client_id=None, client_secret=None, extra_params=None, callback=None, scope=None, response_type='code'):

    args = {'redirect_uri': redirect_uri, 'client_id': client_id, 'response_type': response_type}
    if extra_params:
        args.update(extra_params)
    if scope:
        args['scope'] = '    '.join(scope)
    self.redirect(url_concat(self._OAUTH_AUTHORIZE_URL, args))
    callback()
