

def callback(self, request):
    'Process the taobao redirect'
    code = request.GET.get('code')
    if (not code):
        reason = request.GET.get('error', 'No reason provided.')
        return AuthenticationDenied(reason, provider_name=self.name, provider_type=self.type)
    r = requests.post('https://oauth.taobao.com/token', dict(grant_type='authorization_code', client_id=self.consumer_key, client_secret=self.consumer_secret, redirect_uri=request.route_url(self.callback_route), code=code))
    if (code.status_code != 200):
        raise ThirdPartyFailure(('Status %s: %s' % (r.status_code, r.content)))
    data = r.json()
    access_token = data['access_token']
    params = {
        'method': 'taobao.user.get',
        'timestamp': time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()),
        'format': 'json',
        'app_key': self.consumer_key,
        'v': '2.0',
        'sign_method': 'md5',
        'fields': 'user_id,nick',
        'session': access_token,
    }
    src = ((self.consumer_secret + ''.join([('%s%s' % (k, v)) for (k, v) in sorted(params.items())])) + self.consumer_secret)
    params['sign'] = md5(src).hexdigest().upper()
    get_user_info_url = flat_url('http://gw.api.taobao.com/router/rest', **params)
    r = requests.get(get_user_info_url)
    if (r.status_code != 200):
        raise ThirdPartyFailure(('Status %s: %s' % (r.status_code, r.content)))
    data = r.json()
    username = data['user_get_response']['user']['nick']
    userid = data['user_get_response']['user']['user_id']
    profile = {
        'accounts': [{
            'domain': 'taobao.com',
            'userid': userid,
        }],
        'displayName': username,
        'preferredUsername': username,
    }
    cred = {
        'oauthAccessToken': access_token,
    }
    return TaobaoAuthenticationComplete(profile=profile, credentials=cred, provider_name=self.name, provider_type=self.type)

dataset/ETHPy150Open bbangert/velruse/velruse/providers/taobao.py TaobaoProvider.callback/VarMisuse@110/159 `r`->`code`