'use strict';
|
|
const {
|
ProviderType
|
} = require('./consts.js')
|
|
const configCenter = require('uni-config-center')
|
|
// 多维数据为兼容uni-id以前版本配置
|
const OauthConfig = {
|
'weixin-app': [
|
['app', 'oauth', 'weixin'],
|
['app-plus', 'oauth', 'weixin']
|
],
|
'weixin-mp': [
|
['mp-weixin', 'oauth', 'weixin']
|
],
|
'weixin-h5': [
|
['web', 'oauth', 'weixin-h5'],
|
['h5-weixin', 'oauth', 'weixin'],
|
['h5', 'oauth', 'weixin']
|
],
|
'weixin-web': [
|
['web', 'oauth', 'weixin-web']
|
],
|
'qq-app': [
|
['app', 'oauth', 'qq'],
|
['app-plus', 'oauth', 'qq']
|
],
|
'qq-mp': [
|
['mp-qq', 'oauth', 'qq']
|
]
|
}
|
|
const Support_Platforms = [
|
ProviderType.WEIXIN_MP,
|
ProviderType.WEIXIN_H5,
|
ProviderType.WEIXIN_APP,
|
ProviderType.WEIXIN_WEB,
|
ProviderType.QQ_MP,
|
ProviderType.QQ_APP
|
]
|
|
class ConfigBase {
|
|
constructor() {
|
const uniIdConfigCenter = configCenter({
|
pluginId: 'uni-id'
|
})
|
|
this._uniIdConfig = uniIdConfigCenter.config()
|
}
|
|
getAppConfig(appid) {
|
if (Array.isArray(this._uniIdConfig)) {
|
return this._uniIdConfig.find((item) => {
|
return (item.dcloudAppid === appid)
|
})
|
}
|
return this._uniIdConfig
|
}
|
}
|
|
class AppConfig extends ConfigBase {
|
|
constructor() {
|
super()
|
}
|
|
get(appid, platform) {
|
if (!this.isSupport(platform)) {
|
return null
|
}
|
|
let appConfig = this.getAppConfig(appid)
|
if (!appConfig) {
|
return null
|
}
|
|
return this.getOauthConfig(appConfig, platform)
|
}
|
|
isSupport(platformName) {
|
return (Support_Platforms.indexOf(platformName) >= 0)
|
}
|
|
getOauthConfig(appConfig, platformName) {
|
let treePath = OauthConfig[platformName]
|
let node = this.findNode(appConfig, treePath)
|
if (node && node.appid && node.appsecret) {
|
return {
|
appid: node.appid,
|
secret: node.appsecret
|
}
|
}
|
return null
|
}
|
|
findNode(treeNode, arrayPath) {
|
let node = treeNode
|
for (let treePath of arrayPath) {
|
for (let name of treePath) {
|
const currentNode = node[name]
|
if (currentNode) {
|
node = currentNode
|
} else {
|
node = null
|
break
|
}
|
}
|
if (node === null) {
|
node = treeNode
|
} else {
|
break
|
}
|
}
|
return node
|
}
|
}
|
|
|
module.exports = {
|
AppConfig
|
};
|