33</template >
44
55<script lang="ts" setup>
6- import {nextTick , defineProps , onBeforeUnmount } from ' vue'
7- import {useRoute , useRouter } from ' vue-router'
8- import {getBrowserLang } from ' @/locales'
6+ import { nextTick , defineProps , onBeforeUnmount } from ' vue'
7+ import { useRoute , useRouter } from ' vue-router'
8+ import { getBrowserLang } from ' @/locales'
99import useStore from ' @/stores'
1010
1111const WE_COM_ORIGIN = ' https://login.work.weixin.qq.com'
@@ -22,10 +22,10 @@ const props = defineProps<{
2222
2323const router = useRouter ()
2424const route = useRoute ()
25- const {chatUser} = useStore ()
25+ const { chatUser } = useStore ()
2626
2727const {
28- params : {accessToken},
28+ params : { accessToken },
2929} = route as any
3030
3131let iframe: HTMLIFrameElement | null = null
@@ -43,7 +43,7 @@ function createTransparentIFrame(el: string) {
4343 iframeEl .referrerPolicy = ' origin'
4444 iframeEl .setAttribute (' frameborder' , ' 0' )
4545 iframeEl .setAttribute (' allowtransparency' , ' true' )
46-
46+ iframeEl . setAttribute ( ' allow ' , ' local-network-access ' )
4747 container .appendChild (iframeEl )
4848 return iframeEl
4949}
@@ -77,21 +77,18 @@ const init = async () => {
7777 ` &panel_size=small ` +
7878 ` &redirect_type=self `
7979 iframe .addEventListener (' load' , (e ) => {
80- console .log (' load' , iframe )
8180 if (iframe ?.contentWindow ) {
82- iframe .contentWindow .stop ()
83- const searchParams = new URLSearchParams (iframe .contentWindow .location .search )
84- const code = searchParams .get (' code' )
85- if (code ) {
86- chatUser .wecomCallback (code , accessToken ).then ((ok ) => {
87- router .push ({
88- name: ' chat' ,
89- params: {accessToken },
90- query: route .query ,
91- })
92- cleanup ()
93- })
94- }
81+ iframe .contentWindow .postMessage (' getToken' , ' *' )
82+ }
83+ })
84+ window .addEventListener (' message' , (event ) => {
85+ if (event .data .type === ' token' ) {
86+ chatUser .setToken (event .data .value )
87+ router .push ({
88+ name: ' chat' ,
89+ params: { accessToken },
90+ query: route .query ,
91+ })
9592 }
9693 })
9794}
0 commit comments