海外手机号钉钉免登二开案例

一、场景
集成钉钉的轻应用,境内用户可以实现免登跳转登录,境外用户手机号一致无法钉钉免登苍穹。
如:钉钉将境外号码852-857xx311拆分为区号+手机号2个字段返回,需升级苍穹至v6.0.2版本,如不升级,需二开免登插件解决。
二、免登插件二开示例
package kd.bos.login.thirdauth.app.dingding;
import kd.bos.dc.api.model.Account;
import kd.bos.logging.Log;
import kd.bos.logging.LogFactory;
import kd.bos.login.thirdauth.app.AppAuthResult;
import kd.bos.login.thirdauth.app.ThirdAppAuthtication;
import kd.bos.login.thirdauth.app.UserType;
import kd.bos.login.utils.StringUtils;
import kd.bos.util.RevProxyUtil;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
public class DDAuthticationExt extends ThirdAppAuthtication {
private static final String ERRMSG = "errmsg";
private static Log logger = LogFactory.getLog(DDAuthticationExt.class);
@Override
public boolean isNeedHandle(HttpServletRequest request, Account currentCenter) {
String app_type = request.getParameter("apptype");
String code = request.getParameter("code");
//是否需要钉钉认证
return !StringUtils.isEmpty(app_type) && app_type.equalsIgnoreCase("dd") && !StringUtils.isEmpty(code);
}
@Override
public AppAuthResult appAuthtication(HttpServletRequest request, Account currentCenter) {
AppAuthResult result = new AppAuthResult();
result.setSucceed(false);
//钉钉类型
String app_type = request.getParameter("apptype");
if (StringUtils.isEmpty(app_type)) {
return result;
}
//钉钉身份标识
String code = request.getParameter("code");
if (StringUtils.isEmpty(code)) {
return result;
}
String tenant = RevProxyUtil.getTenantCode(request);
String reurnType = DDUtils.getLoginType(currentCenter,tenant);
String appkey = request.getParameter("appkey");
if (StringUtils.isEmpty(appkey)) {
logger.error("dd login: appkey is blank !");
return result;
}
String appsecret = request.getParameter("appsecret");
if (StringUtils.isEmpty(appsecret)) {
appsecret = StringUtils.getTrimedBlank(DDUtils.getAppSecret(appkey, currentCenter));
if (StringUtils.isEmpty(appsecret)) {
logger.error("dd login: appsecret is blank !");
return result;
}
}
//获取钉钉accessToken
String access_token = DDUtils.getAccess_token(appkey, appsecret,currentCenter);
if (StringUtils.isEmpty(access_token)) {
logger.info("dd:access_token is null !");
result.setErrorMessage("dd:access_token is null !");
return result;
}
logger.info("dd: code is : " + code);
//获取钉钉用户id
String userId = DDUtils.getUserId(access_token, code,currentCenter);
if (StringUtils.isEmpty(userId)) {
logger.info("dd:userId is null !");
result.setErrorMessage("userId is null !");
return result;
}
//获取钉钉用户信息
HashMap<String, Object> userMap = DDUtils.getUserInfo(access_token, userId,currentCenter);
if (null == userMap) {
log
海外手机号钉钉免登二开案例
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



