def _oauth_get_user(self, access_token, callback):
     return OpenIdMixin.get_authenticated_user(self, callback)
                                 oauth_scope=oauth_scope)
        return redirect(self._OPENID_ENDPOINT + '?' + urllib.urlencode(args))

    def get_authenticated_user(self, callback):
        """Fetches the authenticated user data upon redirect."""
        # Look to see if we are doing combined OpenID/OAuth
        oauth_ns = ''
        for name, values in self.request.args.iterlists():
            if name.startswith('openid.ns.') and \
                values[-1] == u'http://specs.openid.net/extensions/oauth/1.0':
                oauth_ns = name[10:]
                break

        token = self.request.args.get('openid.' + oauth_ns + '.request_token',
            '')
        if token:
            try:
                token = dict(key=token, secret='')
                url = self._oauth_access_token_url(token)
                response = urlfetch.fetch(url, deadline=10)
            except urlfetch.DownloadError, e:
                logging.exception(e)
                response = None

            return self._on_access_token(callback, response)
        else:
            return OpenIdMixin.get_authenticated_user(self, callback)

    def _oauth_get_user(self, access_token, callback):
        return OpenIdMixin.get_authenticated_user(self, callback)