在Lumen中引入钉钉SDK
生活随笔
收集整理的這篇文章主要介紹了
在Lumen中引入钉钉SDK
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
最近在用Lumen開發(fā)釘釘企業(yè)內(nèi)部應(yīng)用,需要調(diào)用釘釘?shù)腟DK。不得不說,釘釘開發(fā)文檔寫的真是感人,開發(fā)的時候那是相當刺激。在使用SDK的時候遇到不少坑,釘釘?shù)奈臋n寫的不是很詳細,記錄下在Laravel中集成DingTalk SDK的方法:
1.首先在http://open-doc.dingtalk.com/microapp/serverapi2/vzzrkv中下載PHP版本SDK。解壓后文件目錄如圖
這里我只用到dingtalk中的文件,刪除aliyun、QimenCloud目錄,保留top目錄Autoloader.php和TopSdk.php文件。
- 在composer.json中:
"autoload": {"classmap": ["database"],"files":["app/Packages/taobao/TopSdk.php"],"psr-4": {"App\\": "app/"}},然后執(zhí)行composer dump-autoload
- 執(zhí)行完畢后,在Controller中就可以直接使用DingTalk SDK了。測試結(jié)果如下(注意要加‘ \ ’):
$c = new \DingTalkClient(\DingTalkConstant::$CALL_TYPE_OAPI,\DingTalkConstant::$METHOD_POST , \DingTalkConstant::$FORMAT_JSON); var_dump($c);打印出結(jié)果如下:
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" }?
遇到的坑:
- 在調(diào)用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)此處發(fā)現(xiàn)_executeOapi方法需要傳7個參數(shù),而在execute中只傳了6個參數(shù)。修改后的代碼如下:
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);} }?
總結(jié)
以上是生活随笔為你收集整理的在Lumen中引入钉钉SDK的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深度学习进阶:多分类与TensorFlo
- 下一篇: 深度学习:梯度下降算法改进