def get_user_id(self, code): """ 查询用户id """ try: # 获取access token response = requests.post(constants.GET_TOKEN_URL, params={ 'code': code, 'client_id': self.client_id, 'client_secret': self.client_secret, 'grant_type': 'authorization_code' }).__getattribute__('_content') result = dict([ (k, v[0]) for k, v in parse_qs(response.decode()).items() ]) # 将响应信息转换为字典 # 获取user info headers = {'Authorization': 'token ' + result['access_token']} response = requests.get(constants.GET_USERINFO_URL, params={ 'access_token': result['access_token'] }, headers=headers).json() user_id = response['id'] return user_id except Exception: raise APICallError('Invalid auth_code')
def get_alipay_user_id(self): ''' 返回支付宝用户ID ''' try: user_id = alipay_user_id_sdk.get_alipay_user_id(auth_code=self.auth_code,\ app_private_key=self.app_private_key, alipay_public_key=self.alipay_public_key, app_id=self.app_private_key) except: raise APICallError('get alipay user id failed') return user_id
def get_union_id(self, code): ''' 查询用户id ''' try: token_info = requests.get(constants.GET_TOKEN_URL,\ params={'code':code, 'appid':self.appid, 'secret':self.secret,\ 'grant_type':'authorization_code'}).json() unionid = token_info['unionid'] return unionid except Exception: raise APICallError('Invalid auth_code')
def get_work_wechat_user_id(self, code): ''' 查询用户id ''' try: token_info = requests.get(constants.GET_TOKEN_URL,\ params={'corpid':self.corp_id, 'corpsecret':self.secret}).json() access_token = token_info['access_token'] user_info = requests.get(constants.GET_USERINFO_URL,\ params={'access_token':access_token, 'code':code}).json() work_wechat_user_id = user_info['UserId'] return work_wechat_user_id except Exception: raise APICallError('Failed to get the user id')
def get_open_id(self, code): ''' 获取qq的openid ''' try: access_token_response = requests.get(constants.GET_TOKEN_URL, params={'grant_type':'authorization_code',\ 'client_id':self.app_id, 'client_secret':self.app_key, 'code':code,\ 'redirect_uri':constants.REDIRECT_URI}).text access_token = re.findall(r'access_token=(.*?)&', access_token_response)[0] open_id_response = requests.get(constants.GET_OPENID_URL, params={ 'access_token': access_token }).text open_id = re.findall(r'"openid":"(.*?)"}', open_id_response)[0] except Exception: # pylint: disable=broad-except raise APICallError('invalid code') return open_id
def get_ding_id(self): ''' 从钉钉获取dingId ''' appid = DingConfig.get_current().qr_app_id appsecret = DingConfig.get_current().qr_app_secret access_token = requests.get(constants.QR_GET_ACCESS_TOKEN_URL, params={'appid':appid,\ 'appsecret':appsecret}).json()['access_token'] get_psstt_code = requests.post(constants.QR_GET_PSSTT_CODE_URL, params={'access_token':access_token},\ json={'tmp_auth_code':self.code}) openid = get_psstt_code.json()['openid'] persistent_code = get_psstt_code.json()['persistent_code'] sns_token = requests.post(constants.QR_GET_SNS_TOKEN_URL, params={'access_token':access_token},\ json={'openid':openid, 'persistent_code':persistent_code}).json()['sns_token'] resp = requests.get(constants.QR_GET_USER_INFO_URL,\ params={'sns_token': sns_token}).json() errcode = resp.get('errcode', '') errmsg = resp.get('errmsg', '') if errcode != 0: raise APICallError('Failed to get ding id,code:%s, msg:%s' % (errcode, errmsg)) self.ding_id = resp.get('user_info', '')['dingId'] return self.ding_id