feat: 微信自动关闭功能
This commit is contained in:
@@ -5,7 +5,7 @@
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1.0, maximum-scale=1, user-scalable=no">
|
||||
<title>登录中转</title>
|
||||
<title>登录</title>
|
||||
<style>
|
||||
* {
|
||||
box-sizing: border-box;
|
||||
@@ -40,6 +40,7 @@
|
||||
<div class="loading">Loading Code...</div>
|
||||
<script type="module">
|
||||
import { loginSuccessUrl } from './config.js';
|
||||
import { closePage } from './is-wechat.js';
|
||||
const url = new URL(window.location.href);
|
||||
const state = url.searchParams.get('state');
|
||||
const code = url.searchParams.get('code');
|
||||
@@ -51,18 +52,13 @@
|
||||
console.error(err);
|
||||
alert('登录失败,请稍后再试');
|
||||
document.body.append('登录失败,请稍后再试');
|
||||
setTimeout(() => {
|
||||
window.close();
|
||||
}, 2000);
|
||||
closePage();
|
||||
});
|
||||
// document.body.append(JSON.stringify(res, null, 2));
|
||||
if (res.code === 200) {
|
||||
localStorage.setItem('token', res.data.token);
|
||||
window.close()
|
||||
setTimeout(() => {
|
||||
window.open(loginSuccessUrl, '_blank');
|
||||
}, 1000);
|
||||
}
|
||||
closePage();
|
||||
|
||||
</script>
|
||||
</body>
|
||||
|
||||
@@ -6,4 +6,4 @@ export const config = {
|
||||
|
||||
export const loginUrl = `https://kevisual.xiongxiao.me/root/mini-web/login.html`;
|
||||
|
||||
export const loginSuccessUrl = `/ai/chat/`;
|
||||
export const loginSuccessUrl = `/apps/wallnote/`;
|
||||
|
||||
22
mini-web/envision/is-wechat.js
Normal file
22
mini-web/envision/is-wechat.js
Normal file
@@ -0,0 +1,22 @@
|
||||
export const isWechat = () => {
|
||||
const ua = navigator.userAgent.toLowerCase();
|
||||
return /micromessenger/i.test(ua);
|
||||
};
|
||||
|
||||
export const closePage = (time = 2000) => {
|
||||
if (!isWechat()) {
|
||||
setTimeout(() => {
|
||||
window.close();
|
||||
}, time);
|
||||
return;
|
||||
}
|
||||
if (window.WeixinJSBridge) {
|
||||
setTimeout(() => {
|
||||
window.WeixinJSBridge.call('closeWindow');
|
||||
}, time);
|
||||
} else {
|
||||
setTimeout(() => {
|
||||
window.close();
|
||||
}, time);
|
||||
}
|
||||
};
|
||||
@@ -32,6 +32,7 @@
|
||||
<div class="loading">Loading...</div>
|
||||
<script type="module">
|
||||
import { config } from './config.js'
|
||||
import { closePage } from './is-wechat.js'
|
||||
const demo = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect`
|
||||
const appid = config.appid
|
||||
const redirect_uri = encodeURIComponent(config.redirect_uri)
|
||||
@@ -40,9 +41,7 @@
|
||||
const state = url.searchParams.get('state')
|
||||
if (!state) {
|
||||
alert('Invalid state. Please try again later.');
|
||||
setTimeout(() => {
|
||||
window.close();
|
||||
}, 2000);
|
||||
closePage();
|
||||
}
|
||||
const link = demo.replace('APPID', appid).replace('REDIRECT_URI', redirect_uri).replace('SCOPE', scope).replace('STATE', state);
|
||||
window.location.href = link
|
||||
@@ -50,9 +49,7 @@
|
||||
// Add a timeout for loading
|
||||
setTimeout(() => {
|
||||
alert('Loading timeout. Please try again later.');
|
||||
setTimeout(() => {
|
||||
window.close();
|
||||
}, 2000);
|
||||
closePage()
|
||||
}, 60000); // 60 seconds timeout
|
||||
</script>
|
||||
</body>
|
||||
|
||||
Reference in New Issue
Block a user