甘肃分支
分支:1.2.0-RELEASE-GANSU
第三方登录
基本流程
1、获取第三方AppToken
// 甘肃获取第三方token 第一步
getApptokenByThirdParty({ commit, dispatch, state }, params) {
let cookie = getCookie('TRUSTED_SESSIONID'); //setThirdPartyUserCookie 后会删除
return new Promise((resolve, reject) => {
this._vm.$http
.post(user.getApptokenByThirdParty, params)
.then(async (res) => {
//1
commit('setApptoken', res.data);
await dispatch('setThirdPartyUserCookie', cookie); //删除cookit TRUSTED_SESSIONID放到session里
await dispatch('getUserInfoByThirdParty');
await dispatch('thirdPartyLogin', {
...state.thirdPartyUserInfo.result,
appToken: state.apptoken.result.appToken,
userToken: state.thirdPartyUserCookie,
}); //3
await dispatch('getFunsByThirdParty', {
appToken: state.apptoken.result.appToken,
taskClass: '7',
});
router.push({ name: '/' });
resolve(res);
})
.catch((err) => {
reject(err);
});
});
},
2、获取user信息
// 甘肃第三方登录获取user信息 第二步
getUserInfoByThirdParty({ commit, state, rootGetters }, params) {
return new Promise((resolve, reject) => {
try {
let {appId} = rootGetters['common/getThirdPartyLoginInfo']
let formdata = new FormData()
formdata.append('appId', appId)
formdata.append('userToken', state.thirdPartyUserCookie)
this._vm.$http
.post(user.getUserInfoByThirdParty, formdata)
.then((res) => {
commit('setThirdPartyUserInfo', res.data)
resolve(res)
})
.catch((err) => {
console.log(err)
reject(err)
})
} catch (e) {
console.log(e)
reject(err)
}
});
},
3、获取第三方权限信息
getFunsByThirdParty({ commit }, params) {
return new Promise((resolve, reject) => {
this._vm.$http
.post(user.getFunsByThirdParty, params)
.then((res) => {
commit('setThirdPartyUserPermission', res.data);
resolve(res);
})
.catch((err) => {
reject(err);
});
});
},
4、登录
thirdPartyLogin({ commit }, params) {
return new Promise((resolve, reject) => {
this._vm.$http
.post(user.thirdPartyLogin, params)
.then((res) => {
console.log('res.data---login', res.data.data);
commit('setToken', res.data.data);
resolve(res);
})
.catch((err) => {
reject(err);
});
});
},
5、获取用户信息 同 getUserInfo
getThirdPartyInfo({ commit }, params) {
return new Promise((resolve, reject) => {
try {
this._vm.$http
.post(user.thirdPartyInfo, params)
.then((res) => {
const { sysUser, roleVoList, orgVoList } = res.data.data;
const userInfo = {
...sysUser,
roleVoList,
orgVoList,
};
commit('setUserInfo', userInfo);
resolve(res);
})
.catch((err) => {
reject(err);
});
} catch (error) {
reject(error);
}
});
},
6、退出
loginOutByThirdParty({ commit }, params) {
return new Promise(async (resolve, reject) => {
try {
await clearCookie('TRUSTED_SESSIONID');
window.location.href = 'https://jwy.gs';
resolve();
} catch (e) {
reject(e);
console.log(e);
}
});
},
MOCK
提示
一下是关键接口返回报文,可自行MOCK调试。
// POST /crypto/stream/getAppToken
{
'tag': "successed/failed",
'msg': {
'code': '404',
'info': '具体错误内容,返回成功不用写'
},
'result': {
'appToken': 'appToken----' # // 申请应用令牌时返回此字段
}
}
// POST /crypto/stream/getUserInfo
{
'tag': "successed/failed",
'msg': {
'code': '404',
'info': '具体错误内容,返回成功不用写'
},
//'authUserData: {},
'result': {
//以下字段为主要用户信息,其它信息可与研发协商修改
'yhId': 'admin', '# '
'xm': '姓名', # '姓名'
'jh': '警号', # '//警号'
'sfzh': '身份证号', # //身份证号
'dwdm': '单位代码要求12位这项可配置没少问题', # //单位代码要求12位这项可配置没少问题
'dwmc': '单位名称', # //单位名称
'zw': '职位' # //职位
}
}
// POST /crypto/PDA_Auth/user/funs.do
{
'code': '001',
'data': {
'result': '2007,2049'
}
}
其他
AppId
提示
目前只有 兰州市 和甘肃省厅使用第三方登录,对应的appId如下:
// src/util/global.js
export const LOGIN_CONFIG = [
{
desc: '甘肃省厅',
appId: 'gsga00034',
paramValue: '8',
},
{
desc: '兰州市',
appId: 'gsga01015',
paramValue: '9',
}
]