前言:登录接口基本不会是明文传输,今天用python已rsa加密的账号密码登录获取登录成功的code,再已code换取token,获取测试其他接口所依赖的token
这里需要3个接口
1、Login接口
2、Rsa加密接口
3、code换token接口
每次测试如果用postman获取token的话,步骤就比较繁多
用python写好接口简单封装后,一键获取即可获得token
封装的包的组成
一、data.yaml 存放接口的入参
二、key.txt 存放Rsa加密的公钥密钥(因为公钥密码有格式排版要求,建议存放txt文件里,试了别的方法,读取出来都会报错,不知道为啥)
三、Request_page.py 是封装的接口登录方式
四、Get_Accesstoken.py 存放的是运行脚本(因为自己用,所以封装的比较简单)
import yaml
from Get_accessToken.Utils.Request_page import Helper
def read_yaml():
f = open('Data/data.yaml', 'r', encoding='utf-8')
data = yaml.load(f,Loader=yaml.FullLoader)
# f.close()
return data
class Get_AccessToken(Helper):
def read_key(self):
with open('Data/key.txt') as f:
return f.read()
def RSA_url(self):
return read_yaml()['RSA_User_request_data']['url']
def RSA_header(self):
return read_yaml()['RSA_User_request_data']['headers']
def Login_url(self):
return read_yaml()['Login_request_data']['url']
def Login_header(self):
return read_yaml()['Login_request_data']['headers']
def RSA_User(self,username):
'''加密账号手机号'''
payload = read_yaml()['RSA_User_request_data']['payload_user']
payload['publicKey'] =self.read_key()
payload['encStr'] =username
r= self.post_data(url=self.RSA_url(),headers=self.RSA_header(),data=payload)
return r.json()['data']
def Rsa_Pwd(self,password):
'''加密密码'''
payload = read_yaml()['RSA_User_request_data']['payload_pwd']
payload['publicKey'] = self.read_key()
payload['encStr'] = password
r= self.post_data(url=self.RSA_url(),headers=self.RSA_header(),data=payload)
return r.json()['data']
def Login(self,username,password):
'''登录获取code,返回code'''
url = self.Login_url()
headers = self.Login_header()
payload = read_yaml()['Login_request_data']['payload']
payload['loginData']['account'] = self.RSA_User(username)
payload['loginData']['password'] = self.Rsa_Pwd(password)
r= self.post_json(url=url,headers=headers,json=payload)
if r.json()['code']== 0 :
print(r.json()['msg']+'账号登录成功')
return r.json()["data"]["code"]
else:
print(r.json()['code'])
def Code_token(self,username,password):
'''code换token'''
url = read_yaml()['Access_token']['url'] +str(self.Login(username,password))
r = self.get(url=url)
print('AccessToken:'+r.json()["data"]["AccessToken"])
if __name__ == '__main__':
Get_AccessToken().Code_token('账号', '密码')
五、
read_yaml()函数是读取yaml文件
read_key()方法是获取txt文本的公钥
其他就没啥了,看下返回结果
获取的token用于其他接口的使用,比如,绑定解绑,查询绑定关系,根据日常工作的需要
希望能帮助到有需要的人