Springboot钉钉免密登录集成(钉钉小程序和H5微应用)

这篇具有很好参考价值的文章主要介绍了Springboot钉钉免密登录集成(钉钉小程序和H5微应用)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

欢迎访问我的个人博客:www.ifueen.com

RT,因为业务需要把我们系统集成到钉钉里面一个小程序和一个H5应用,并且在钉钉平台上面实现无感登录,用户打开我们系统后不需要再输入密码即可登录进系统,查阅文档实际操作过之后记录一下过程

准备工作

首先就是需要在钉钉开发者平台申请账号资格,开发者后台管理,通过链接进去注册或者加入团队
然后就是从平台创建应用,平台有很多种不同类型的应用,我所需要创建的是企业内部应用,一个小程序,一个H5微应用,其他应用具体可以参考钉钉应用介绍的文档:https://open.dingtalk.com/document/orgapp/application-types
springboot集成钉钉,其他随笔,spring boot,钉钉,小程序
创建好了应用之后需要拿到应用的AppKey和AppSecret,点击应用详情里面能够看到,把这两个复制下来后面需要用到
springboot集成钉钉,其他随笔,spring boot,钉钉,小程序然后根据我的实际经验还需要设置几个东西,保证后面使用顺畅

在开发管理中将自己调用的公网ip配置进去

springboot集成钉钉,其他随笔,spring boot,钉钉,小程序

在权限管理中把个人权限和通讯录权限进行申请授权,我的设置是全部员工,然后把全部申请授权

springboot集成钉钉,其他随笔,spring boot,钉钉,小程序
springboot集成钉钉,其他随笔,spring boot,钉钉,小程序

开发集成

这里我采用的是springboot进行开发,官方推荐的是maven来进行构建,但是我们使用的是gradle开发,这里我把两种的都列出来

maven

<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>alibaba-dingtalk-service-sdk</artifactId>
    <version>2.0.0</version>
</dependency>

gradle

implementation 'com.aliyun:alibaba-dingtalk-service-sdk:2.0.0'

然后在application.yml配置文件中配置好之前保存的AppKey和AppSecret

#钉钉开放平台
dingTalk:
  appkey: AppKey
  appSecret: AppSecret

获取token工具类

/**
 * 获取access_token工具类
 */
@Slf4j
@Component
public class AccessTokenUtil {

    //钉钉开发平台配置appkey
    public static String APP_KEY;

    //钉钉开发平台配置appsecret
    public static String APP_SECRET;

    @Value("${dingTalk.appkey}")
    public void setAppKey(String appKey){
        AccessTokenUtil.APP_KEY = appKey;
    }

    @Value("${dingTalk.appSecret}")
    public void setAppSecret(String appSecret){
        AccessTokenUtil.APP_SECRET = appSecret;
    }

    /**
     * 钉钉网关gettoken地址
     */
    public static final String URL_GET_TOKKEN = "https://oapi.dingtalk.com/gettoken";

    public static String getToken() throws RuntimeException {
        try {
            DefaultDingTalkClient client = new DefaultDingTalkClient(URL_GET_TOKKEN);
            OapiGettokenRequest request = new OapiGettokenRequest();

            request.setAppkey(APP_KEY);
            request.setAppsecret(APP_SECRET);
            request.setHttpMethod("GET");
            OapiGettokenResponse response = client.execute(request);
            String accessToken = response.getAccessToken();
            return accessToken;
        } catch (ApiException e) {
            log.error("getAccessToken failed", e);
            throw new RuntimeException();
        }

    }

    public static void main(String[] args)throws ApiException{
        String accessToken = AccessTokenUtil.getToken();
        System.out.println(accessToken);
    }
}

然后写一个接口测试

	@Resource
    private DingTalkService dingTalkService;


    /**
     * 钉钉免密登录
     * @param authCode authCode码
     * @return
     */
    @GetMapping("/login")
    public Result dingLogin(@RequestParam("authCode") String authCode){
        return Result.success(dingTalkService.dingLogin(authCode));
    }

在service中处理

	public static final String URL_GET_USER_INFO = "https://oapi.dingtalk.com/user/getuserinfo";

    /**
     * 获取用户信息的接口
     */
    public static final String URL_USERINFO_GET = "https://oapi.dingtalk.com/topapi/v2/user/get";
    

	public Object dingLogin(String authCode) {
        //获取accessToken,注意正是代码要有异常流处理
        String token = AccessTokenUtil.getToken();

        //获取用户信息
        DefaultDingTalkClient client = new DefaultDingTalkClient(URL_GET_USER_INFO);
        OapiUserGetuserinfoRequest request = new OapiUserGetuserinfoRequest();
        request.setCode(authCode);
        request.setHttpMethod("GET");

        OapiUserGetuserinfoResponse response;
        try {
            response = client.execute(request, token);
            //当前用户id
            String userId = response.getUserid();
            OapiV2UserGetResponse userInfoResp = getUserInfo(token, userId);
            OapiV2UserGetResponse.UserGetResponse result = userInfoResp.getResult();
            //拿到用户信息之后进行业务处理,这里我是通过unionid和数据库中用户的unionid进行匹配,然后再走我们自己的登录逻辑

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

public OapiV2UserGetResponse getUserInfo(String access_token, String userId){

        try {
            DingTalkClient client = new DefaultDingTalkClient(URL_USERINFO_GET);
            OapiV2UserGetRequest req = new OapiV2UserGetRequest();
            req.setUserid(userId);
            req.setLanguage("zh_CN");
            OapiV2UserGetResponse rsp = null;
            rsp = client.execute(req, access_token);
            System.out.println(rsp.getBody());
            return rsp;
        } catch (ApiException e) {
            e.printStackTrace();
            return null;
        }
    }

上面返回的Result是自定义封装的一个返回实体,可以根据情况替换成自己的返回类型,大概的流程就是如此,前端获取authcode码之后请求接口,这边再访问钉钉的api接口,通过token和code码获取到用户的信息,然后就可以根据自己系统的业务进行相关的登录判断操作,整个过程还是挺简单的,只要把准备工作做好还是比较顺畅文章来源地址https://www.toymoban.com/news/detail-700811.html

到了这里,关于Springboot钉钉免密登录集成(钉钉小程序和H5微应用)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 开发钉钉小程序

    本来开始打算、从原生开始入手的,可是生态太差了,几乎搜不到啥有用的内容;但是它的老大哥支付宝小程序生态就不错,毕竟它们两个都用一个开发者工具,万分纠结之下,朋友强力安利我uniapp开发钉钉小程序,说是有很多不错的组件,你刚学的vue 和 vuex就可以用上了,

    2024年02月11日
    浏览(33)
  • 钉钉小程序无法关联应用

    钉钉小程序无法关联应用 后台创建了新的应用 钉钉小程序开发者工具企业内部应用关联应用 没有下拉列表 无法关联,只能点击新增按钮,重新进入后台 很奇怪,明明创建好了应用,为什么关联下拉列表没有这个应用呢? 创建应用还不够,需要添加应用能力 应用能力添加应

    2024年02月21日
    浏览(39)
  • uniapp运行钉钉小程序

    因项目原因,公司需要在钉钉里面开发小程序。之前用uniapp开发过app,H5,小程序。还真没尝试过钉钉小程序,今天就简单的记录下uniapp运行钉钉小程序中的过程。 在项目目录新建package.json文件,在文件中添加如下代码: 这样在项目目录中unpackage文件下生成支付宝的项目文件

    2024年04月25日
    浏览(30)
  • 钉钉小程序的开发入门【亲自调试】

    一、创建应用 在本部分,你将在开发者后台创建一个小程序应用,并完成基础配置。 登录钉钉开发者后台 在开发者后台页面,选择企业内部开发,然后单击创建应用。  3、在弹出的创建应用页面中填写基本信息,然后单击 确定创建 。应用类型:选择小程序,开发方式:选

    2024年02月09日
    浏览(63)
  • 钉钉小程序引用阿里巴巴图标

    2.打开的界面如图,先建一个iconfont.acss文件,全选浏览器打开的样式代码,复制粘贴进新建的iconfont.acss文件中 3.使用

    2024年02月11日
    浏览(45)
  • 使用HBuilder运行钉钉小程序

    1,创建package.json文件夹,添加以下代码 2,点击运行按钮,就可以打开了 , 查看控制台,在小程序开发者工具中进行要导入的路径  

    2024年02月16日
    浏览(56)
  • 钉钉开放平台-小程序开发实战(钉钉小程序客户端)

    钉钉(Ding Talk)是阿里巴巴集团打造的企业级智能移动办公平台,是数字经济时代的企业组织协同办公和应用开发平台。 钉钉开放平台具有强大丰富的原生能力,目前已经开放超过2000个API接口,同时为开发者和服务商提供专业的技术培训体系,分享最新功能和开放能力,提

    2024年02月03日
    浏览(29)
  • 钉钉小程序 没有调用该接口的权限

    钉钉小程序 没有调用该接口的权限 钉钉官方自带免登陆小程序 后端接口报错 {\\\"errcode\\\":60011,\\\"errmsg\\\":\\\"没有调用该接口的权限,接口权限申请参考:https://open.dingtalk.com/document/orgapp-server/add-api-permission, {requiredScopes=[qyapi_get_member]}\\\"} 后台配置 解决: 后台管理平台-权限管理-通讯录管

    2024年02月21日
    浏览(33)
  • uniapp开发笔记----配置钉钉小程序

    接上一章之后,我想要把项目配置成钉钉小程序 官方文档点击这里 1. 项目根目录添加package.json文件 2. 之后点击运行就可以看到已经添加了钉钉小程序 3. 如果首次使用需要配置 点击运行之后会跳转到配置页面,滑块最后便可以快速选中工具地址

    2024年04月12日
    浏览(26)
  • uniapp生成钉钉小程序梳理(整理)

    uniapp官网:处理微信小程序和钉钉小程序等小程序代码 我是页面 // #ifdef MP-ALIPAY var _that = this; //js里面处理兼容 // #endif uni-app开发多端之钉钉小程序-其他博主文章 钉钉小程序免登录授权-其他博主文章 服务器出口–配置接口地址–: 配置完以后会展示出来您配置的地址:(注

    2024年02月11日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包