免登录
This commit is contained in:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user