对接钉钉扫码登录
准备条件
1.登录钉钉开放平台,注册应用扫码授权
2.获取到需要的参数
(1)appId (该参数前后端都用得到)
(2)appSecret(后端必需参数)
(3)loginTmpCode :需要前端小哥哥带着appId向钉钉发送请求获取,前端请求参考 钉钉开放平台
3.发送请求获取钉钉扫码用户的信息
//loginTmpCode:前端小哥哥获取的临时登录Code
@RequestMapping("/DingLogin")
public void DingLogin(String loginTmpCode, HttpServletRequest request) {
try {
DefaultDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/sns/getuserinfo_bycode");
OapiSnsGetuserinfoBycodeRequest req = new OapiSnsGetuserinfoBycodeRequest();
req.setTmpAuthCode(loginTmpCode);
OapiSnsGetuserinfoBycodeResponse response = client.execute(req, "你的appId", "你的appSecret");
//用户的信息都在这里面啦
response.getUserInfo();
}
}
response.getUserInfo中储存了用户的几个信息
nick : 用户在钉钉上面的昵称
openid : 用户在当前开放应用内的唯一标识
unionid : 用户在当前开放应用所属企业内的唯一标识
备注 如果是多项目公用一个扫码登录,用户统一管理的前提下,建议使用openid作为识别码。扫码后可能存在不同的返回地址情况,在一个应用下创建的扫码授权openid是相同的,unionid是不同的。
dingding sdk及maven配置
<dependency>
<groupId>com.dingtalk.source</groupId> <!--自定义-->
<artifactId>dingtalkSource</artifactId> <!--自定义-->
<version>1.0</version> <!--自定义-->
<scope>system</scope> <!--system,类似provided,需要显式提供依赖的jar以后,Maven就不会在Repository中查找它-->
<systemPath>${basedir}/src/main/resources/taobao-sdk-java-auto_1479188381469-20190920-source.jar</systemPath> <!--项目根目录下的lib文件夹下-->
</dependency>
<dependency>
<groupId>com.dingtalk</groupId> <!--自定义-->
<artifactId>dingtalk</artifactId> <!--自定义-->
<version>1.0</version> <!--自定义-->
<scope>system</scope> <!--system,类似provided,需要显式提供依赖的jar以后,Maven就不会在Repository中查找它-->
<systemPath>${basedir}/src/main/resources/taobao-sdk-java-auto_1479188381469-20190920.jar</systemPath> <!--项目根目录下的lib文件夹下-->
</dependency>