123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- '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
- };
|