免登录

This commit is contained in:
pengyuthon
2026-02-22 13:54:52 +08:00
parent 56bdc9f264
commit 36c7897099
+8 -3
View File
@@ -94,13 +94,15 @@ class ResUsers(models.Model):
raise OAuthLogin("请正确设置微信登录验证的corpid agentid corpsecret!" )
corpid = client_ids[0]
corpsecret = client_ids[2]
access_token = provider.scope
# 从 ir.config_parameter 缓存 access_token,避免写入 provider 记录触发 registry 重载
ICP = self.env['ir.config_parameter'].sudo()
access_token = ICP.get_param('wechat.access_token', default='')
code = params.get('code', False)
if not access_token:
access_token = gettoken(provider.validation_endpoint, corpid, corpsecret)
ICP.set_param('wechat.access_token', access_token)
if not code:
raise OAuthLogin("微信扫码错误:没有 code!" )
provider.scope = access_token
oauth_uid = False
headers={'Content-Type': 'application/json'}
@@ -109,6 +111,9 @@ class ResUsers(models.Model):
dict_user = response.json()
errcode = dict_user.get("errcode", 0)
if errcode in [42001]:
access_token = gettoken(provider.validation_endpoint, corpid, corpsecret)
ICP.set_param('wechat.access_token', access_token)
user_url = "%s?access_token=%s&code=%s" % (provider.data_endpoint, access_token, code)
response = requests.get(user_url, headers=headers)
dict_user = response.json()
@@ -118,7 +123,7 @@ class ResUsers(models.Model):
oauth_uid = dict_user["UserId"]
elif dict_user["errcode"] == 40014 or dict_user["errcode"] == 42001: # 40014: 不合法的access_token, 42001: access_token expired
access_token = gettoken(provider.validation_endpoint, corpid, corpsecret)
provider.scope = access_token
ICP.set_param('wechat.access_token', access_token)
user_url = "%s?access_token=%s&code=%s" % (provider.data_endpoint, access_token, code)
response = requests.get(user_url, headers = headers)
dict_user = response.json()