首页 > 作文

钉钉企业内部H5微应用开发详解

更新时间:2023-04-07 11:05:11 阅读: 评论:0

企业内部h5微应用开发 分为 服务端api和前端api的开发,主要涉及到进入应用免登流程和jsapi鉴权。

jsapi鉴权开发步骤:

1、创建h5微应用

登入钉钉开放平台(),进入“应用开发”->企业内部开发h5微应用->创建应用,并填写基本信息和配置开发信息

2、jsapi鉴权服务端api的开发:

(1)通过appkey 和 appcret 获取调用接口凭证accesstoken(/d/file/titlepic/gettoken 获取用于jsapi的临时票据ticket(/d/file/titlepic/get_jsapi_ticket *ticket(jsapi的临时票据),noncestr(随机串),timestamp(时间戳),url(当前网页的url,不包含#及其后面部分)计算签名信息 * */ public static function sign($ticket, $noncestr, $timestamp, $url) { $plain = 'jsapi_ticket=' . $ticket . '&noncestr=' . $noncestr . '&timestamp=' . $timestamp . '&url=' . $url; return sha1($plain); }

(4)通过accesstoken 获取用于jsapi的临时票据ticket(说明:由于会牵涉到多个企业,企业的appkey 和 appcret的一些信息都是写在json配置文件中,前端传企业id到服务端,服务端就会从json配置文件中获取企业信息)

/*     * 根据企业id corpid 返回 jsapi 鉴权配置信息     * */    public static function getconfig($corpid)    {        $_config = lf::getapiconfig($corpid);        $appkey = $_config["appkey"];        $appcret = $_config["appcret"];        $agentid = $_config["agentid"];        $noncestr = 'flywong';        $timestamp = time();        //$url = lf::getcurrenturl();        $url = $_config["appurl"];                $accesstoken = lf::getaccesstoken($appkey,$appcret);        $ticket = lf::getticket($accesstoken);        $signature = lf::sign($ticket, $noncestr, $timestamp, $url);                $config = array(            'agentid' => $agentid,            'corpid' => $corpid,            'timestamp' => $timestamp,            'noncestr' => $noncestr,            'signature' => $signature,            'url' => $url,            'type'=>0        );        return json_encode($config, json_unescaped_slashes);    }
/*     * 根据企业id corpid 从api_config.json配置文件中找到 企业对应的信息,并返回企业应用开发信息     * */    public static function getapiconfig($corpid)    {         $json_string = file_get_contents(__dir__ .'/../api_config.json');   //从文件中读取数据到php变量         $arrs = json_decode($json_string, true);          foreach($arrs as $key => $value)         {             if($value["corpid"] == $corpid)             {                 return $value;             }         }    }

企业的配置文件api_config.json

3、jsapi鉴权前端api的开发:

前端发送get请求获取服务端的jsapi 鉴权配置信息

// 异步获取dd.config  async getddconfig({commit, state},callback) {    // 发送异步ajax请求    const result = await reqddconfig(state.corpid)    // 提交一个mutation    const ddconfig = result    ddconfig.jsapilist= state.jsapilist   dd.config(ddconfig);   commit(receive_ddconfig, {ddconfig})   // 数据更新了, 通知一下组件   callback && callback() }
let that = this;      //获取 jsapi 鉴权配置信息      that.$store.dispatch('getddconfig', () => {//        that.$nexttick(() => {// 数据ddconfig state 更新后执行          that.$store.dispatch('getu化学方程式配平方法rinfo')//获取登入用户信息          that.$store.dispatch('getgeolocation')//获取地图定位信息        })      })
/* 状态管理*/export default {  corpid:'dingb0bd5c5a3ba53e1231232378f',//企业id  ddconfig:{},//钉钉签权配置信息  jsapilist:[    'runtime.info',    'biz.contact.choo',    'device.notification.confirm',    'device.notification.alert',    'device.notification.prompt',    'biz.ding.post',    'biz.util.openlink',    'device.geolocation.get', 桌面图片   'biz.util.scancard'  ],//需要签权的jsapi  urinfo:{}, //用户信息  geolocation:{} //地图定位信息}

4、h5微应用的免登

“免登”是指用户进入应用后,无需输入钉钉用户名和密码,应用程序可自动获取当前用户身份,进而登录系统的流程。

1、前端去获取微应用免登授权码,然后把授权码发送到服务端api得到当前用户信息

// 异步获取urinfo  geturinfo({commit, state}) {    dd.runtime.permission.reques脸颊祛斑tauthcode({      corpid: state.corpid, // 企业id      onsuccess: async function (info) {        let code = info.code // 通过该免登授权码可以获取用户身份        // 发送异步ajax请求        const result = await requrinfo(code,state.corpid)        // 提交一个mutation        const urinfo = result        commit(receive_urinfo, {urinfo})      }    })  }

2、服务端api获取用户信息

/*     * 通过免登授权码code和access_token获取用户的urid     * */    public static function geturinfo($accesstoken, $code)    {  莲菜的做法      $respon = \util\http::get("/ur/geturinfo",array("access_token" => $accesstoken, "code" => $code));        $urinfo = json_decode(json_encode($respon),true);        $urid = $urinfo["urid"];        return lf::getur($accesstoken,$urid);    }    /*     * 通过access_token 和 urid 获取用户详情     * */    private static function getur($accesstoken,$urid)    {        $respon = \util\http::get("/u英语听力材料r/get",array("access_token" => $accesstoken, "urid" => $urid));        return json_encode($respon);    }

提醒:钉钉的信息获取必须在钉钉应用环境中运行。(我是在电脑上安装安卓模拟器然后安装钉钉app进行调试的)

到此这篇关于钉钉企业内部h5微应用开发详解的文章就介绍到这了,更多相关钉钉企业内部h5微应用内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章,希望大家以后多多支持www.887551.com!

本文发布于:2023-04-07 11:05:09,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/23804a9470221400a0bd1a23c2f55344.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:钉钉企业内部H5微应用开发详解.doc

本文 PDF 下载地址:钉钉企业内部H5微应用开发详解.pdf

标签:信息   服务端   企业   票据
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图