'Redirects to the authentication URL for this service.
After authentication, the service will redirect back to the given
callback URI with additional parameters including ``openid.mode``.
We request the given attributes for the authenticated user by
default (name, email, language, and username). If you don\'t need
all those attributes for your app, you can request fewer with
the ax_attrs keyword argument.
.. 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 authenticate_redirect(self, callback_uri=None, ax_attrs=['name', 'email', 'language', 'username'], callback=None):

    callback_uri = (callback_uri or self.request.uri)
    args = self._openid_args(callback_uri, ax_attrs=ax_attrs)
    self.redirect(((self._OPENID_ENDPOINT + '?') + urllib_parse.urlencode(args)))
    callback()
