防止回调地狱,导致code无限叠加产生鉴权失败的问题

This commit is contained in:
aixianling
2022-12-29 15:24:40 +08:00
parent 225b369090
commit 3130479d39

View File

@@ -202,15 +202,19 @@ let timer = {}
* https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&agentid=AGENTID#wechat_redirect * https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&agentid=AGENTID#wechat_redirect
* @param params * @param params
*/ */
const oauth2Weixin = params => qs.stringifyUrl({ const oauth2Weixin = params => {
url: "https://open.weixin.qq.com/connect/oauth2/authorize", const redirect = qs.parseUrl(location.href)
query: { delete redirect.query.code
response_type: 'code', return qs.stringifyUrl({
redirect_uri: encodeURIComponent(location.href), url: "https://open.weixin.qq.com/connect/oauth2/authorize",
...params query: {
}, response_type: 'code',
fragmentIdentifier: "wechat_redirect" redirect_uri: qs.stringifyUrl(redirect),
}) ...params
},
fragmentIdentifier: "wechat_redirect"
})
}
export const wxwork = { export const wxwork = {
state: () => ({ state: () => ({
agentSignURL: "", agentSignURL: "",
@@ -287,12 +291,9 @@ export const wxwork = {
dispatch("agentSign", {corpId, suiteId}).then(() => excute(true)).then(() => resolve()) dispatch("agentSign", {corpId, suiteId}).then(() => excute(true)).then(() => resolve())
} else reject("URL缺少必要参数(corpId)") } else reject("URL缺少必要参数(corpId)")
}) })
} else new Promise((resolve, reject) => { } else new Promise(() => {
const {appid} = params const oauthURL = oauth2Weixin(params)
if (!!appid) { location.replace(oauthURL)
const oauthURL = oauth2Weixin(params)
location.replace(oauthURL)
} else reject("URL缺少必要参数(appid)")
}) })
} }
return excute() return excute()