基本信息
被测对象:企业微信
实现模块:WeWork 类获取 token 方法
问 题
- get_token可以传入空值吗?
- 如果可以,具体怎么实现可以说一下吗?
- 每个应用都有自己的secret,默认secret要怎么设置呢?
@seveniruby 希望思寒老师可以解答一下~~
思 考
if secret is None:
这一段代码不太懂。。如果secret为空,也就是传入的空值,则返回token[secret]的key不就是None?
假如取的不是None,而是WeWork的变量secret,而看视频发现这个secret取的是“十一期测试开发”这个应用的secret,可能只是随机取的,那如果要设置默认值的话,取哪个比较好?
每个应用都要自己的secret,不传就不知道是哪个应用了,十分困惑,求解答。
class WeWork(BaseApi):
token_url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken"
corpid = 'wwd6da61649bd66fea'
token = dict()
token_time = dict
secret = "3XBa77sS_W304tGdt-Sc-YManyJ5sKlwq4dSzrIzE_g"
@classmethod
def get_token(cls, secret=secret):
# todo:
# 这里判空的处理不太明白???
if secret is None:
# todo: token制度发生变化,在这个地方决定是否重新获取
return cls.token[secret]
# 避免重复请求,提高速度
if secret not in cls.token.keys():
r = cls.get_access_token(secret)
cls.token[secret] = r["access_token"]
# cls.token_time[secret] = datetime.now()
return cls.token[secret]
@classmethod
def get_access_token(cls, secret):
r = requests.get(
cls.token_url,
params={"corpid": cls.corpid, "corpsecret": secret}
)
cls.format(r)
assert r.json()["errcode"] == 0
return r.json()