qrcode.js
3.85 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
const { uc, form, portal, bpmModel, bpmRunTime } = window.context
export default {
getQrCodeWeChat(corpId, agentId, url) {
var wwLogin = new WwLogin({
id: 'qr_wechat',
appid: corpId,
agentid: agentId,
redirect_uri: encodeURIComponent(url),
state: 'htwecom',
href: 'data:text/css;base64,LmltcG93ZXJCb3ggLnFyY29kZSB7aGVpZ2h0OiAyMjBweDt9Ci5pbXBvd2VyQm94IC5xcmNvZGUge3dpZHRoOiAyMjBweDt9Ci5pbXBvd2VyQm94IC50aXRsZSB7ZGlzcGxheTogbm9uZTt9Ci5zdGF0dXNfaWNvbiB7ZGlzcGxheTogbm9uZSAgIWltcG9ydGFudH0KLmltcG93ZXJCb3ggLnN0YXR1cyB7dGV4dC1hbGlnbjogY2VudGVyO30g',
lang: 'zh',
})
var handleMessage = function (event) {
setTimeout(() => {
wwLogin.destroyed()
}, 100);
}
if (typeof window.addEventListener != 'undefined') {
window.addEventListener('message', handleMessage, false)
} else if (typeof window.attachEvent != 'undefined') {
window.attachEvent('onmessage', handleMessage)
}
},
getQrCodeDing(appIdDd, url) {
//二维码 钉钉
let stateDd = 'htDingding'
let urlDd = `https://oapi.dingtalk.com/connect/oauth2/sns_authorize?appid=${appIdDd}&response_type=code&scope=snsapi_login&state=${stateDd}&redirect_uri=${url}`
var ddLogin = DDLogin({
id: 'qr_dingding',
goto: encodeURIComponent(urlDd),
style: 'border:none;background-color:#FFFFFF;',
state: 'htdingding',
})
var handleMessage = function (event) {
var origin = event.origin
//判断是否来自ddLogin扫码事件。
if (origin == 'https://login.dingtalk.com') {
var loginTmpCode = event.data
//获取到loginTmpCode后就可以在这里构造跳转链接进行跳转了
console.log('loginTmpCode', loginTmpCode)
window.location.href = `${urlDd}&loginTmpCode=${loginTmpCode}`
}
}
if (typeof window.addEventListener != 'undefined') {
window.addEventListener('message', handleMessage, false)
} else if (typeof window.attachEvent != 'undefined') {
window.attachEvent('onmessage', handleMessage)
}
},
getQrCodeFlyBook(clientId, url) {
//二维码 飞书
let state = 'htflybook'
var urlGotoFlyBook = `https://passport.feishu.cn/suite/passport/oauth/authorize?client_id=${clientId}&redirect_uri=${url}&response_type=code&state=${state}`
var QRLoginObj = QRLogin({
id: 'qr_flyBook',
goto: urlGotoFlyBook,
height: '260',
style: 'border:none;background-color:#FFFFFF;',
})
var handleMessage = function (event) {
var origin = event.origin
// 使用 matchOrigin 方法来判断 message 是否来自飞书页面
if (QRLoginObj.matchOrigin(origin)) {
var loginTmpCode = event.data
// 在授权页面地址上拼接上参数 tmp_code,并跳转
window.location.href = `${urlGotoFlyBook}&tmp_code=${loginTmpCode}`
}
}
if (typeof window.addEventListener != 'undefined') {
window.addEventListener('message', handleMessage, false)
} else if (typeof window.attachEvent != 'undefined') {
window.attachEvent('onmessage', handleMessage)
}
},
getQrCode(scanApps, scanCodeMode) {
var hasFlyBook = false
const { weChatWork, dingtalk, flyBook } = scanApps
var redirectUri = window.location.href
if(redirectUri.indexOf('?') > 0){
redirectUri = redirectUri.split("?")[0]
}
if (weChatWork && scanCodeMode && scanCodeMode.includes("wechat")) {
const { corpId, agentId } = weChatWork
this.getQrCodeWeChat(corpId, agentId, redirectUri)
}
if (dingtalk && scanCodeMode && scanCodeMode.includes("dingding")) {
const { corpId } = dingtalk
this.getQrCodeDing(corpId, redirectUri)
}
if (flyBook && scanCodeMode && scanCodeMode.includes("flyBook")) {
hasFlyBook = true
const { corpId } = flyBook
this.getQrCodeFlyBook(corpId, redirectUri)
}
return hasFlyBook
},
}