如何根据授权码直接进入业务系统?
1 由前端根据钉钉企业id去获取钉钉用户授权码。传递服务端(后端),服务端根据授权码去调钉钉接口,如果发现该用户的钉钉id和业务系统的某个用户有关联关系,服务端进行seesion处理。具体可以看文档交互。
大概所有接口: 前端获取授权码。前端调用后端免登接口(参数:授权码,钉钉企业id等),后端调用钉钉SDK根据授权码获取用户信息,session处理。
点击消息免登实现?
消息模板需要配置链接点击页,笔者配置的页面为
dingtalk://dingtalkclient/action/openapp?corpid=${corpId}&container_type=work_platform&app_id=${appId}&redirect_type=jump&redirect_url=${url}
${corpId} ${appId} 可以调用消息模板发送工作消息赋值, {url} 赋值,重定向地址 一定要 urlencode编码
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
public class DingTalkRedirectURLEncoder {
public static void main(String[] args) {
String redirectURL = "https://example.com/redirect";
String encodedURL = encodeRedirectURL(redirectURL);
System.out.println("Encoded URL: " + encodedURL);
}
public static String encodeRedirectURL(String redirectURL) {
try {
return URLEncoder.encode(redirectURL, "UTF-8");
} catch (UnsupportedEncodingException e) {
// 处理编码异常
e.printStackTrace();
}
return null;
}
}
这样在工作台,打开消息进入的是配置的前端处理逻辑页面,前端获取重定向地址中的cropId ,去调用用户授权码,再去调用后端免登接口,实现直接进入业务系统。