浙政钉专有钉钉扫码登录
浙政钉(专有钉钉)扫码登录
前言
此文章主要是补充一下目前网上浙政钉(专有钉钉)的扫码登录的问题。
正文
官方文档:
链接: 官方文档.
官方文档里的获取二维码的地址:https://login.dg-work.cn/oauth2/auth.htm?response_type=code&client_id=应用标识&redirect_uri=回调地址&scope=get_user_info&authType=QRCODE
这个是有问题的
原文链接:修改参考.
需要注意的是,以浙政钉获取二维码为例:APP_NAME=应用标识_dingoa,这个_dingoa如果你的应用标识里有了就在写的时候不要再带了
https://login-pro.ding.zj.gov.cn/qrlogin/webAppLogin.htm?APP_NAME=应用标识***_dingoa***&protocolKey=自定义(如:UUID)&protocol=oauth2&BACK_URL=回调地址&scope=get_user_info&state=
下面展示一些 内联代码片
。
下面的是获取前端二维码页面的HTML,可以测试一下,实际开发最好是让前端获取。
/***
* 浙政钉应用标识
*/
private static final String appID="*****_dingoa";
/***
* 浙政钉APPKey
*/
private static final String appKey="*********";
/***
* 浙政钉appSecret
*/
private static final String appSecret ="*********";
/***
* 浙政钉扫码后回调地址(回调地址是你去申请的)
*/
private static final String redirectUrl = "*********";
/***
* 各环境域名/登录域名(这边看情况选,域名在官方文档里找)
*/
private static final String domainName ="openplatform-pro.ding.zj.gov.cn";
/***
* 各环境域名/登录域名(这边看情况选,域名在官方文档里找)
*/
private static final String getUserInfoUrl= "login-pro.ding.zj.gov.cn";
public void toALiDingDing(HttpServletResponse response) {
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("https://login-pro.ding.zj.gov.cn/qrlogin/webAppLogin.htm?APP_NAME=")
.append(appID)
.append("&protocolKey=UUID&protocol=oauth2&BACK_URL=")
.append(redirectUrl)
.append("&scope=get_user_info&state=");
try {
response.sendRedirect(stringBuilder.toString());
} catch (IOException e1) {
}
}
前端页面在扫码后会得到一个code,我这边是前端返回的pram,所以写了实体类接收,最好是直接返回data
要注意的是code只能用一次,且不是auth_code
获取人员信息需要accessToken和code,获取接口看看官方文档,这边分别是
accessToken:/gettoken.json
人员信息:/rpc/oauth2/getuserinfo_bycode.json
我是直接把获取accessToken和获取人员信息直接写一块了,因为我后面不需要accessToken了
private JSONObject getDingTalk(@RequestBody DingLogin entity){
//获取token
ExecutableClient executableClient =ExecutableClient.getInstance();
executableClient.setAccessKey(appKey);
executableClient.setSecretKey(appSecret);
executableClient.setDomainName(domainName);
executableClient.setProtocal("https");
executableClient.init();
//executableClient要单例,并且使用前要初始化,只需要初始化一次
String api = "/gettoken.json";
GetClient getClient = executableClient.newGetClient(api);
String apiResult = getClient.get();
JSONObject map = JSON.parseObject(apiResult);
//提取返回值中的token
String token = map0.getJSONObject("content").getJSONObject("data").getString("accessToken");
String api = "/rpc/oauth2/getuserinfo_bycode.json";
PostClient postClient = executableClient.newPostClient(api);
postClient.addParameter("access_token", token);
postClient.addParameter("code", entity.getCode());
String apiResult = postClient.post();
JSONObject map = JSON.parseObject(apiResult);
System.out.println(apiResult);
return map;
}
返回结果和官方文档相同,就不展示了。
免登的和上面代码差不多,获取auth_code交给前端获取,要注意似乎是只有手机能干这个。
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhfhhffe
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13