zoukankan      html  css  js  c++  java
  • 钉钉扫码登录 java

     java获取扫码登录后的钉钉id 从而可以查出员工具体信息 部门具体信息

    1.注册钉钉企业账号

    注册地址

    https://oa.dingtalk.com/register.html

    开发文档地址

    https://open-doc.dingtalk.com/microapp/isv

    注册完支行查看corpId corpSecret

    创建扫码登录使用的app ID、appSecret

    2.下载钉钉sdk (http://img.alicdn.com/top/i1/LB1l7mXv0knBKNjSZKPXXX6OFXa)把jar包传到私有maven仓库

    <dependency>
    <groupId>com.taobao</groupId>
    <artifactId>taobao-sdk-java-auto</artifactId>
    <version>20180815</version>
    </dependency>

    (仅供参考)

     3.java代码使用示例(redis工具类没贴出来)

    需导入包

    import com.dingtalk.api.DefaultDingTalkClient;
    import com.dingtalk.api.DingTalkClient;
    import com.dingtalk.api.request.*;
    import com.dingtalk.api.response.*;
    import com.taobao.api.ApiException;

      private final String SDINGTALKSERVICE="https://oapi.dingtalk.com"; private final String METHOD_GET="GET"; /** * 先从缓存查,再到钉钉查 * @param corpId * @param corpSecret * @return */ public String getToken(String corpId,String corpSecret){ String access_token=RedisUtils.get("ACCESS_TOKEN"); if(StringUtils.isEmpty(access_token)){ access_token=getTokenFromDing(corpId,corpSecret); } return access_token; } /** * 企业内部开发获取access_token * @param corpId 企业Id * @param corpSecret 企业应用的凭证密钥 * @return */ public String getTokenFromDing(String corpId,String corpSecret){ OapiGettokenResponse response = null; try { DingTalkClient client = new DefaultDingTalkClient(SDINGTALKSERVICE+"/gettoken"); OapiGettokenRequest request = new OapiGettokenRequest(); request.setCorpid(corpId); request.setCorpsecret(corpSecret); request.setHttpMethod(METHOD_GET); response = client.execute(request); } catch (ApiException e) { e.printStackTrace(); } String body=response.getBody(); JSONObject jo = JSONObject.parseObject(body); String errcode=jo.getString("errcode"); String access_token=null; if("0".equals(errcode)){ access_token=(String) jo.get("access_token"); RedisUtils.set("ACCESS_TOKEN", access_token, 3600); } return access_token; } public String getSnsToken(String appId, String appSecret){ String access_token=RedisUtils.get("SNS_ACCESS_TOKEN"); if(StringUtils.isEmpty(access_token)){ access_token=getOpenToken(appId,appSecret); } return access_token; } /** * 获取钉钉开放应用的ACCESS_TOKEN * @param appId * @param appSecret * @return */ public String getOpenToken(String appId, String appSecret) { OapiSnsGettokenResponse response = null; try { DingTalkClient client = new DefaultDingTalkClient(SDINGTALKSERVICE+"/sns/gettoken"); OapiSnsGettokenRequest request = new OapiSnsGettokenRequest(); request.setAppid(appId); request.setAppsecret(appSecret); request.setHttpMethod(METHOD_GET); response = client.execute(request); } catch (ApiException e) { e.printStackTrace(); } String body=response.getBody(); JSONObject jo = JSONObject.parseObject(body); String errcode=jo.getString("errcode"); String access_token=null; if("0".equals(errcode)){ access_token=(String) jo.get("access_token"); RedisUtils.set("SNS_ACCESS_TOKEN", access_token, 3600); } return access_token; } /** * 获取用户授权的持久授权码 * @param accessToken * @return */ public String get_persistent_code(String accessToken,String code){ OapiSnsGetPersistentCodeResponse response = null; try { DingTalkClient client = new DefaultDingTalkClient(SDINGTALKSERVICE+"/sns/get_persistent_code"); OapiSnsGetPersistentCodeRequest request = new OapiSnsGetPersistentCodeRequest(); request.setTmpAuthCode(code); response= client.execute(request,accessToken); } catch (ApiException e) { e.printStackTrace(); } return response.getBody(); } /** * 获取用户授权的SNS_TOKEN * @param openId * @param persistentCode * @param accessToken 开放应用的token * @return */ public String get_sns_token(String openId, String persistentCode,String accessToken) { OapiSnsGetSnsTokenResponse response = null; try { DingTalkClient client = new DefaultDingTalkClient(SDINGTALKSERVICE + "/sns/get_sns_token"); OapiSnsGetSnsTokenRequest request = new OapiSnsGetSnsTokenRequest(); request.setOpenid(openId); request.setPersistentCode(persistentCode); response = client.execute(request, accessToken); } catch (ApiException e) { e.printStackTrace(); } return response.getSnsToken(); } /** * 获取用户授权的个人信息 * @param snsToken * @return */ public String get_sns_userinfo_unionid(String snsToken) { OapiSnsGetuserinfoResponse response = null; try { DingTalkClient client = new DefaultDingTalkClient(SDINGTALKSERVICE + "/sns/getuserinfo"); OapiSnsGetuserinfoRequest request = new OapiSnsGetuserinfoRequest(); request.setSnsToken(snsToken); request.setHttpMethod(METHOD_GET); response = client.execute(request); } catch (ApiException e) { e.printStackTrace(); } return response.getBody(); } /** * 根据unionid获取userid * @param accessToken * @param unionid * @return */ public String getUseridByUnionid(String accessToken,String unionid) { OapiUserGetUseridByUnionidResponse response = null; try { DingTalkClient client = new DefaultDingTalkClient(SDINGTALKSERVICE + "/user/getUseridByUnionid"); OapiUserGetUseridByUnionidRequest request = new OapiUserGetUseridByUnionidRequest(); request.setUnionid(unionid); request.setHttpMethod(METHOD_GET); response = client.execute(request, accessToken); } catch (ApiException e) { e.printStackTrace(); } return response.getBody(); } /** * 获取用户授权的个人信息 * @param accessToken * @param uid * @return */ public String getUserGetOne(String accessToken,String uid) { OapiUserGetResponse response = null; try { DingTalkClient client = new DefaultDingTalkClient(SDINGTALKSERVICE + "/user/get"); OapiUserGetRequest request = new OapiUserGetRequest(); request.setUserid(uid); request.setHttpMethod(METHOD_GET); response = client.execute(request, accessToken); } catch (ApiException e) { e.printStackTrace(); } return response.getBody(); } /** * 获取部门详情(根据部门id查询) * @param accessToken * @param deptid * @return */ public String getDepartmentInfo(String accessToken, String deptid) { OapiDepartmentGetResponse response = null; try { DingTalkClient client = new DefaultDingTalkClient(SDINGTALKSERVICE + "/department/get"); OapiDepartmentGetRequest request = new OapiDepartmentGetRequest(); request.setId(deptid); request.setHttpMethod(METHOD_GET); response = client.execute(request, accessToken); } catch (ApiException e) { e.printStackTrace(); } return response.getBody(); }

     钉钉开发都非常简单 按照文档把要传的参数传过去 就可以获取想要的信息以及信息的增删改

  • 相关阅读:
    android之AlertDialog 点击其它区域自己主动消失
    leetCode191/201/202/136 -Number of 1 Bits/Bitwise AND of Numbers Range/Happy Number/Single Number
    CEF 框架使用集锦
    Qt WebEngine Debugging and Profiling
    Qt内置浏览器引擎WebEngine调试和分析方法
    QWebEngine踩坑记录
    带外(out of band)数据
    碰撞检测算法:点和矩形碰撞、点和圆形碰撞、矩形碰撞、圆形碰撞
    windows 7 安装visual studio 2019 闪退问题解决
    最小二乘法
  • 原文地址:https://www.cnblogs.com/zjk1/p/9621326.html
Copyright © 2011-2022 走看看