• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

浙政钉专有钉钉扫码登录

武飞扬头像
有羽知天风
帮助11

浙政钉(专有钉钉)扫码登录

前言

此文章主要是补充一下目前网上浙政钉(专有钉钉)的扫码登录的问题。

正文

官方文档:
链接: 官方文档.
官方文档里的获取二维码的地址: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
系列文章
更多 icon
同类精品
更多 icon
继续加载