说明

“免登”是指用户进入应用后,无需输入钉钉用户名和密码,应用程序可自动获取当前用户身份,进而登录系统的流程。uni-app 已经兼容了钉钉小程序的部分API(兼容多少不清楚,没找到官方文档), 我们以此实现钉钉小程序内的免登录。

1、获取小程序免登授权码

文档地址:https://ding-doc.dingtalk.com/doc#/dev/wcoaey

企业应用和个人应用的免登授权码均可通过该JSAPI获取。

uni.getAuthCode({
    success:function(res){
        /*{
            authCode: 'hYLK98jkf0m' //string authCode
        }*/
    },
    fail:function(err){
    }
});

返回说明:

参数 说明
authCode 授权码,有效期5分钟,且只能使用一次

2、最终伪代码如下:

<script>
    export default {
        data() {
            return {
            }
        },
        onLoad() {
            // 自动登录
            // #ifdef MP-WEIXIN
            //this.loginThirdpaty("weixin");
            // #endif
            // #ifdef MP-ALIPAY && MP-DINGTALK
            this.loginThirdpaty("dingtalk");
            // #endif
        },
        methods: {
            // 第三方平台登录
            loginThirdpaty(provider){
                var that = this
                // 钉钉登录
                if('dingtalk' == provider ){
                    that.loadModal = true
                    uni.getAuthCode({
                        success:function(res){
                            /*{
                                authCode: 'hYLK98jkf0m' //string authCode
                            }*/
                            console.log(res)
                            let authCode = res.authCode;
                            // 和后台进行交互完成免登录
                            that.loadModal = false;
                        },
                        fail:function(err){
                            that.loadModal = false;
                        }
                    });
                }
                else if('weixin' == provider ){
                    that.loadModal = true;
                    uni.login({
                        provider:'weixin',
                        success(loginRes) {
                            let js_code = loginRes.code;
                            // 和后台进行交互完成免登录
                            that.loadModal = false;
                        },
                        fail:function(err){
                            that.loadModal = false;
                        }
                    })
                }
            }
        }
    }
</script>
作者:Jeebiz  创建时间:2023-02-25 01:30
最后编辑:Jeebiz  更新时间:2023-02-25 01:45