123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- var gettokenid = null
- /**
- * 初始化授权信息
- * @param {object} params OA系统参数
- */
- function initAuthParams(params) {
- wps.PluginStorage.setItem('cookie', Base64.decode(params.cookie))
- var refcookie = Base64.decode(params.refresh_token)
- wps.PluginStorage.setItem('refurl', refcookie.split('|')[0])
- wps.PluginStorage.setItem('refresh_token', refcookie.split('|')[1])
- wps.PluginStorage.setItem(
- constStrEnum.IsSilentMode,
- params.fileparam.IsMaximization == false
- )
- }
- /**
- * 获取可用token
- * 青格勒 2021年5月6日
- * @returns
- */
- function GetToken() {
- return new Promise(function (resolve, reject) {
- let lastExpires = wps.PluginStorage.getItem('token_expires_in')
- let token = wps.PluginStorage.getItem('cookie')
- if (token && lastExpires && lastExpires > Date.now()) {
- resolve(token.indexOf('Bearer') < 0 ? 'Bearer ' + token : token)
- } else {
- loginfo('重新获取操作token')
- //过期重新获取token
- var xhr = new XMLHttpRequest()
- var refresh_token = wps.PluginStorage.getItem('refresh_token')
- xhr.open('POST', wps.PluginStorage.getItem('refurl'))
- xhr.onreadystatechange = function () {
- var nextTime = 2e3
- if (xhr.readyState == 4) {
- if (xhr.status == 200) {
- var returnvalue = JSON.parse(xhr.response)
- let token = 'Bearer ' + returnvalue.access_token
- wps.PluginStorage.setItem('cookie', token)
- wps.PluginStorage.setItem(
- 'token_expires_in',
- returnvalue.expires_in * 1000 + Date.now()
- )
- wps.PluginStorage.setItem(
- 'refresh_token',
- returnvalue.refresh_token
- )
- nextTime = Math.min(
- ~(1 << 31),
- returnvalue.expires_refresh * 1000 - 10000
- )
- if (!gettokenid) gettokenid = setTimeout(AutoRefreshToken, nextTime)
- resolve(token)
- } else {
- loginfo('获取token失败:' + xhr.status + ';' + xhr.responseText)
- toggleBeforeOAfterLoading()
- reject(xhr.status)
- }
- }
- }
- xhr.setRequestHeader('Cache-Control', 'no-cache')
- xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded')
- xhr.send('token=' + refresh_token)
- }
- })
- }
- /**
- * 自动刷新token
- */
- function AutoRefreshToken() {
- loginfo('自动刷新refresh_token')
- var xhr = new XMLHttpRequest()
- var refcookie = wps.PluginStorage.getItem('refresh_token')
- xhr.open('POST', wps.PluginStorage.getItem('refurl'))
- xhr.onreadystatechange = function () {
- if (xhr.readyState == 4) {
- let nextTime = 300
- if (xhr.status == 200) {
- var returnvalue = JSON.parse(xhr.response)
- wps.PluginStorage.setItem(
- 'cookie',
- 'Bearer ' + returnvalue.access_token
- )
- wps.PluginStorage.setItem(
- 'token_expires_in',
- returnvalue.expires_in * 1000 + Date.now()
- )
- wps.PluginStorage.setItem('refresh_token', returnvalue.refresh_token)
- loginfo('自动刷新refresh_token成功')
- nextTime = Math.min(
- ~(1 << 31),
- returnvalue.expires_refresh * 1000 - 10000
- )
- gettokenid = setTimeout(AutoRefreshToken, nextTime)
- } else {
- logerr(`刷新token报错:${xhr.status}:${xhr.responseText}`)
- ShowConfirm(
- '由于用户身份信息失效,修改将无法提交。未防止修改丢失,请将文档另存到本地目录',
- 'warning',
- {
- btns: [
- {
- key: 'saveas',
- text: '另存为',
- primary: true,
- close: true,
- callback: function () {
- var doc = GetCurrentDocument()
- var dialog = wps.Application.FileDialog(2)
- dialog.InitialFileName = doc.FullName
- if (dialog.Show() == -1) {
- dialog.Execute()
- SetDocParamsValue(doc, 'Persist', true)
- Heart.CloseOADocument(doc)
- OnWindowActivate()
- }
- },
- },
- ],
- }
- )
- return
- }
- }
- }
- xhr.setRequestHeader('Cache-Control', 'no-cache')
- xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded')
- xhr.send('token=' + refcookie)
- }
|