在Lumen中引入钉钉SDK

简介: 在Lumen中引入钉钉SDK

最近在用Lumen开发钉钉企业内部应用,需要调用钉钉的SDK。不得不说,钉钉开发文档写的真是感人,开发的时候那是相当刺激。在使用SDK的时候遇到不少坑,钉钉的文档写的不是很详细,记录下在Laravel中集成DingTalk SDK的方法:


1.首先在http://open-doc.dingtalk.com/microapp/serverapi2/vzzrkv中下载PHP版本SDK。解压后文件目录如图


image.png


这里我只用到dingtalk中的文件,删除aliyun、QimenCloud目录,保留top目录Autoloader.php和TopSdk.php文件。


在composer.json中:


"autoload": {
        "classmap": [
            "database"
        ],
        "files":[
            "app/Packages/taobao/TopSdk.php"
        ],
        "psr-4": {
            "App\\": "app/"
        }
    },


然后执行composer dump-autoload


执行完毕后,在Controller中就可以直接使用DingTalk SDK了。测试结果如下(注意要加‘ \ ’):


$c = new
\DingTalkClient(\DingTalkConstant::$CALL_TYPE_OAPI,\DingTalkConstant::$METHOD_POST , \DingTalkConstant::$FORMAT_JSON);
var_dump($c);


打印出结果如下:


object(DingTalkClient)#276 (9) { ["gatewayUrl"]=> string(34) "http://eco.taobao.com/router/rest" ["format"]=> string(4) "json" ["connectTimeout"]=> NULL ["readTimeout"]=> NULL ["apiCallType"]=> string(4) "oapi" ["httpMethod"]=> string(4) "POST" ["checkRequest"]=> bool(true) ["apiVersion":protected]=> string(3) "2.0" ["sdkVersion":protected]=> string(25) "dingtalk-sdk-php-20161214" }


遇到的坑:


在调用DingTalkClient的execute方法获取token的时候,报错如下:


Missing argument 7 for DingTalkClient::_executeOapi(), called in /Web/proj/app/Packages/taobao/dingtalk/DingTalkClient.php on line 328 and defined


查看DingTalkClient.php文件,328行


public function execute($request, $session = null,$bestUrl = null){
        if(DingTalkConstant::$CALL_TYPE_OAPI == $this->apiCallType){
            return $this->_executeOapi($request, $session, $bestUrl, null, null, null); 
        }else{
            return $this->_execute($request, $session, $bestUrl);
        }
}


查看_executeOapi方法的代码:


private function _executeOapi($request, $session = null,$bestUrl = null,$accessKey, $accessSecret, $suiteTicket, $corpId)


此处发现_executeOapi方法需要传7个参数,而在execute中只传了6个参数。修改后的代码如下:


public function execute($request, $session = null,$bestUrl = null){
        if(DingTalkConstant::$CALL_TYPE_OAPI == $this->apiCallType){
            return $this->_executeOapi($request, $session, $bestUrl, null ,null, null, null);
        }else{
            return $this->_execute($request, $session, $bestUrl);
        }
}

 


目录
相关文章
|
6月前
|
开发工具
钉钉新版本sdk中如何获取用户手机id
钉钉新版本sdk中如何获取用户手机id
|
6月前
|
JavaScript 机器人 Java
钉钉提供了多种编程语言的SDK
钉钉提供了多种编程语言的SDK【1月更文挑战第5天】【1月更文挑战第23篇】
181 4
|
fastjson Java 开发工具
钉钉Stream SDK 默认使用的是 FastJSON 1.2.63 版本
钉钉Stream SDK 默认使用的是 FastJSON 1.2.63 版本
147 1
|
移动开发 JSON 缓存
钉钉消息机器人.Net通用C#Unity实现钉钉消息通知一个工具类(无需SDK,无其他引用)
钉钉消息机器人.Net通用C#Unity实现钉钉消息通知一个工具类(无需SDK,无其他引用) Chinar —— 心分享、心创新! 助力快速完成 .Net 通用的钉钉Post机器人消息通知 为初学者节省宝贵的时间,避免采坑! 官方文档详细,但实现方式上没有过多的说明。 本质上就是一个 POST 消息请求 所以我们只要, 完成正常发送POST 使得钉钉方从中可获取对应格式的数据 即可!
1173 0
钉钉消息机器人.Net通用C#Unity实现钉钉消息通知一个工具类(无需SDK,无其他引用)
|
开发工具 开发者 UED
如火如荼的钉钉短视频选用了趣拍SDK
趣拍微视频云服务为开发者提供了视频拍摄、处理、上传、存储、分发的一站式短视频解决方案。提供稳定、高效、强大的SDK助力开发者实现APP短视频功能,基于“海量存储、高效分发、极速网络”等云服务帮助开发者轻松上云,节省开发短视频功能的人力、物力成本,大大缩短开发周期,将精力聚焦于业务本身,快速验证市场并
3535 0
x3d
|
程序员 PHP 开发工具
钉钉服务器端SDK PHP版
项目地址: https://github.com/web3d/DingtalkSDK.git 钉钉官方有些简单的demo,但封装得有些粗糙。 开发的过程中,做了一个有点小意思的工具:json数据转换为PHP 实体类。
x3d
1364 0
|
存储 弹性计算 安全
成功案例-钉钉 | 学习笔记
快速学习 成功案例-钉钉
403 0
|
存储 弹性计算 安全
案例分享——钉钉|学习笔记
快速学习 案例分享——钉钉
375 0
|
存储 弹性计算 安全
案例分享——钉钉
rds数据库 阿里云为钉钉提供了安全性和整体服务的稳定性
案例分享——钉钉
下一篇
无影云桌面