def _oauth1_callback(self, provider, access_token_url):
        request_token = self.session.pop('req_token', None)
        verifier = self.request.get('oauth_verifier', None)
        consumer_key, consumer_secret = self._get_consumer_info_for(provider)

        if not request_token:
            raise Exception("Couldn't find request token")

        if not verifier:
            raise Exception("No OAuth verifier was provided")

        token = oauth1.Token(request_token['oauth_token'], request_token['oauth_token_secret'])
        token.set_verifier(verifier)
        client = self._oauth1_client(token, consumer_key, consumer_secret)

        resp, content = client.request(access_token_url, "POST")
        auth_info = getattr(self, self.TOKEN_RESPONSE_PARSERS[provider])(content)
        user_data = getattr(self, '_get_%s_user_info' % provider)(auth_info, key=consumer_key, secret=consumer_secret)

        return (user_data, auth_info)
Third step of OAuth 1.0 dance.
dataset/ETHPy150Open ibagrak/algae/gae/libs/simpleauth/handler.py/SimpleAuthHandler._oauth1_callback