Commit 61bda907 by 庄冰

feishu login

parent 84a73e50
...@@ -8,67 +8,56 @@ class feishuLoginService{ ...@@ -8,67 +8,56 @@ class feishuLoginService{
}; };
//用户登录 //用户登录
async checkAndLogin(pobj){ async checkAndLogin(pobj){
return system.getResultSuccess(null,"测试"); // return system.getResultSuccess(null,"测试");
if(!pobj.code){ try {
return system.getResultFail(-100, "code参数不能为空"); if(!pobj.code){
} return system.getResultFail(-100, "code参数不能为空");
}
//获取 app_access_token(应用商店应用)
var appAccessTokenRes = await this.utilsFeishuSve.getAppAccessToken(); //获取 app_access_token(应用商店应用)
if(appAccessTokenRes.status!=0){ var appAccessTokenRes = await this.utilsFeishuSve.getAppAccessToken();
return appAccessTokenRes; if(appAccessTokenRes.status!=0){
} return appAccessTokenRes;
var app_access_token = appAccessTokenRes.data; }
var app_access_token = appAccessTokenRes.data;
//获取飞书登录用户身份
var userAccessTokenParams = { //获取飞书登录用户身份
"code":pobj.code,"app_access_token":app_access_token,"open_id":pobj.open_id || "" var userAccessTokenParams = {
}; "code":pobj.code,"app_access_token":app_access_token,"open_id":pobj.open_id || ""
var userAccessTokenRes = await this.utilsFeishuSve.getUserAccessToken(userAccessTokenParams); };
if(userAccessTokenRes.status!=0){ var userAccessTokenRes = await this.utilsFeishuSve.getUserAccessToken(userAccessTokenParams);
return userAccessTokenRes; if(userAccessTokenRes.status!=0){
} return userAccessTokenRes;
var userAccessTokenObj = userAccessTokenRes.data; }
var userAccessTokenObj = userAccessTokenRes.data;
//帐号登录---若用户信息已存在 则返回userpin 不存在则返回空
var loginByUserNameParams={ //帐号登录---若用户信息已存在 则返回userpin 不存在则返回空
"actionType": "getLoginByUserName", var loginByUserNameParams={
"actionBody": { "actionType": "getLoginByUserName",
"open_id":userAccessTokenObj.open_id "actionBody": {
}
};
var loginByUserNameRes = await this.getLoginByUserName(loginByUserNameParams);
if(loginByUserNameRes && loginByUserNameRes.status==0){
return loginByUserNameRes;//获取userpin直接返回
}
//获取飞书用户信息
var userInfoParams={
user_access_token:userAccessTokenObj.access_token
};
var userInfoRes = await this.utilsFeishuSve.getUserInfo(userInfoParams);
if(userInfoRes.status!=0){
return userInfoRes;
}
var userInfoObj = userInfoRes.data;
var createUserParams = {
// uapp_id,channel_userid,channel_username,channel_nickname,open_id,he
};
loginByUserNameParams={
"actionType": "getLoginByUserName",
"actionBody": {
"open_id":userAccessTokenObj.open_id, "open_id":userAccessTokenObj.open_id,
"channelUserId":userInfoObj.mobile,// Y 渠道用户ID "channelUserId":userAccessTokenObj.open_id,// Y 渠道用户ID
"channelUserName":userInfoObj.name,// N 渠道用户名 "channelUserName":userAccessTokenObj.name,// N 渠道用户名
"mobile":userInfoObj.mobile, // N 渠道用户手机号 "nickName":userAccessTokenObj.name, // N 用户昵称
"nickName":userInfoObj.name, // N 用户昵称 "head_url":userAccessTokenObj.avatar_url //头像
"email":userInfoObj.eamil,//邮箱 }
"head_url":userInfoObj.avatar_url //头像 };
} var loginByUserNameRes = await this.getLoginByUserName(loginByUserNameParams);
}; if(loginByUserNameRes && loginByUserNameRes.status==0){
loginByUserNameRes = await this.getLoginByUserName(loginByUserNameParams); return loginByUserNameRes;//获取userpin直接返回
if(loginByUserNameRes && loginByUserNameRes.status==0){ }
return loginByUserNameRes;//获取userpin直接返回 // // 获取飞书用户信息
// var userInfoParams={
// user_access_token:userAccessTokenObj.access_token
// };
// var userInfoRes = await this.utilsFeishuSve.getUserInfo(userInfoParams);
// if(userInfoRes.status!=0){
// return userInfoRes;
// }
// var userInfoObj = userInfoRes.data;
} catch (e) {
return system.getResultFail(-200,e.stack);
} }
return system.getResultFail("获取userpin失败"); return system.getResultFail("获取userpin失败");
} }
......
...@@ -148,7 +148,7 @@ class UtilsFeishuService{ ...@@ -148,7 +148,7 @@ class UtilsFeishuService{
var obj = { var obj = {
user_access_token:pobj.user_access_token user_access_token:pobj.user_access_token
}; };
var rtn = await this.execClient.execGet(obj, url); var rtn = await this.execClient.execFeishuGet(obj, url);
if (!rtn || !rtn.stdout) { if (!rtn || !rtn.stdout) {
return system.getResult(null, "execPost data is empty"); return system.getResult(null, "execPost data is empty");
} }
......
...@@ -7,7 +7,7 @@ class ExecClient { ...@@ -7,7 +7,7 @@ class ExecClient {
this.cmdPostPattern = "curl --user admines:adminGSBes. -k -H 'Content-type: application/json' -d '{data}' {url}"; this.cmdPostPattern = "curl --user admines:adminGSBes. -k -H 'Content-type: application/json' -d '{data}' {url}";
this.cmdGetPattern = "curl -G -X GET '{url}'"; this.cmdGetPattern = "curl -G -X GET '{url}'";
this.cmdPushDataPostPattern = "curl -k -H 'Content-type: application/json' -H 'token:{tk}' -H 'request-id:{requestId}' -d '{data}' {url}"; this.cmdPushDataPostPattern = "curl -k -H 'Content-type: application/json' -H 'token:{tk}' -H 'request-id:{requestId}' -d '{data}' {url}";
this.cmdFeishuGetPattern = "curl -X GET -k -H 'Content-Type: application/json' -H 'Authorization: {Authorization}' -d '{data}' {url} ";
} }
getUUID() { getUUID() {
var uuid = uuidv4(); var uuid = uuidv4();
...@@ -63,7 +63,18 @@ class ExecClient { ...@@ -63,7 +63,18 @@ class ExecClient {
console.log(cmd); console.log(cmd);
return cmd; return cmd;
} }
FetchFeishuGetCmd(subData, url) {
var cmd = this.cmdFeishuGetPattern.replace(
/\{data\}/g, subData).replace(/\{url\}/g, url).replace(/\{Authorization\}/g, "Bearer "+subData.user_access_token);
console.log(cmd);
return cmd;
}
async execFeishuGet(subData, url) {
let cmd = this.FetchFeishuGetCmd(subData, url);
console.log(cmd);
var result = await this.exec(cmd);
return result;
}
async execGet(subData, url) { async execGet(subData, url) {
let cmd = this.FetchGetCmd(subData, url); let cmd = this.FetchGetCmd(subData, url);
console.log(cmd); console.log(cmd);
......
...@@ -353,7 +353,7 @@ module.exports = function (app) { ...@@ -353,7 +353,7 @@ module.exports = function (app) {
try { try {
// console.log(req,"/feishu/login++++++++++++++++++++++++++++++++++++++"); // console.log(req,"/feishu/login++++++++++++++++++++++++++++++++++++++");
var client_ip = system.get_client_ip(req); var client_ip = system.get_client_ip(req);
var result = await feishuLoginSve.checkAndLogin(req.body); var result = await feishuLoginSve.checkAndLogin(req.query);
logCtl.info({ logCtl.info({
optitle: (new Date()).Format("yyyy-MM-dd hh:mm:ss") + "飞书小程序记录回调处理结果,method=login", optitle: (new Date()).Format("yyyy-MM-dd hh:mm:ss") + "飞书小程序记录回调处理结果,method=login",
op: "app/config/routes/api.js/feishu/notify", op: "app/config/routes/api.js/feishu/notify",
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment