// 定义类
export const WxCodeLogin = class {
constructor (option, node, callback) {
this.node = node
this.callback = callback
this.appid = option.appid
this.agentid = option.agentid
this.redirect_uri = option.redirect_uri
this.state = option.state
this.style = option.style
this.href = option.href
this.iframe = ''
// 改变this指向
this.listenerFn = evt => this.listener(evt)
}
// 创建iframe
// createStatusCallback创建的回调
createIframe (createStatusCallback) {
let url = `https://open.work.weixin.qq.com/wwopen/sso/qrConnect?appid=${this.appid}&agentid=${this.agentid}&redirect_uri=${this.redirect_uri}&state=${this.state}`
if (this.href) {
url += `&href=${this.href}`
}
// 更新创建iframe的状态
createStatusCallback && createStatusCallback('start', false)
this.iframe = document.createElement('iframe')
this.iframe.src = url
this.iframe.frameBorder = '0'
this.iframe.allowTransparency = 'true'
this.iframe.scrolling = 'no'
this.iframe.width = '250px'
this.iframe.height = '300px'
this.node.appendChild(this.iframe)
this.iframe.onload = () => {
createStatusCallback && createStatusCallback('end', true)
if (this.iframe.contentWindow && this.iframe.contentWindow.postMessage && window.addEventListener) {
window.addEventListener( 'message', this.listenerFn, false)
this.iframe.contentWindow.postMessage('ask_usePostMessage', '*')
}
}
}
// 移除iframe
removeIframe () {
window.removeEventListener('message', this.listenerFn, false)
this.node.removeChild(this.iframe)
this.iframe = ''
}
listener (event) {
if (event.data && event.origin.indexOf('work.weixin.qq.com') > -1) {
// 接收登录成功的信息
this.callback && this.callback(event.data)
window.removeEventListener('message', this.listenerFn, false)
}
}
}
js es6实现企业微信扫码登录,重写路由重定向
最新推荐文章于 2024-05-07 14:37:09 发布