钉做为团队内部人员的通信软件被原来越多的企业所应用,同时钉钉支持接入第三方应用和企业内部我的应用,即isv接入和企业接入。而我如今要说的是isv接入中的必要条件,isv免登陆。
准备工做
钉钉有详细的开发文档,这个是开发文档的连接地址,其中有一个isv的接入指南,这上面介绍了isv是如何接入。
第一步:注册钉钉企业帐号。在这里能够看到
第二步:成为钉钉开发者,连接地址
第三步:是开发套件。
首先咱们须要建立套件
点击套件的建立,会出现下面的画面
这些在开发文档上面都有介绍。在这个画面中主要是回调url。钉钉为php开发者写了一个关于php的demo,demo地址,这个里面有一个config.php,里面的参数是须要咱们进行填写javascript
<?php define('DIR_ROOT', dirname(__FILE__).'/'); define("OAPI_HOST", "https://oapi.dingtalk.com"); //Suite define("CREATE_SUITE_KEY", "suite4xxxxxxxxxxxxxxx"); define("SUITE_KEY", ""); define("SUITE_SECRET", ""); define("TOKEN", ""); define("APPID", ""); define("ENCODING_AES_KEY", "");
在咱们尚未获取到SUITE_KEY、SUITE_SECRET时默认的是空值,token、ENCODING_AES_KEY都是建立套件的时候填写的。APPID是应用的id,如今先为空。
回调的方法是receive.php。回调url能够写成http://域名/地址/receive.php
填写完成之后咱们须要验证url的有效性,验证成功之后,点击肯定。
咱们会在套件基本信息中获取到SUITE_KEY、SUITE_SECRET,咱们须要将值填写到config.php中。
而后须要建立应用php
主页的地址就是咱们点击应用进入的地址。
建立完应用之后,APPID便可写上应用的id。
注册测试企业css
管理员帐号能够写已经注册的钉钉的手机号码,若是这里随便写个帐号的话,注册完成之后须要绑定你已经注册的钉钉帐号。当全部的工做完成之后咱们能够用这个钉钉帐号,登录钉钉app,找到你的测试企业,在测试企业的应用中就会有你建立的应用。
建立完成测试企业之后,咱们须要对测试企业进行受权。html
当点击受权之后,钉钉会向咱们写的回调url,即receive.php推送`/**java
* 临时受权码 */ else if ("tmp_auth_code" === $eventType) { $tmpAuthCode = $eventMsg->AuthCode; Activate::autoActivateSuite($tmpAuthCode); }` 咱们能够在方法中看到执行这段代码,这段代码主要是获取到临时受权码,而后`<?php
require_once(__DIR__ . "/../util/Log.php");
require_once(__DIR__ . "/../util/Http.php");
require_once(__DIR__ . "/ISVService.php");
/**git
激活ISV套件方法类
*/github
class Activate
{json
/** * 某个企业的临时受权码在成功换取永久受权码后,开放平台将再也不推送该企业临时受权码。 */ public static function autoActivateSuite($tmpAuthCode) { //持久化临时受权码 //Cache::setTmpAuthCode($tmpAuthCode); $suiteTicket = Cache::getSuiteTicket(); $suiteAccessToken = ISVService::getSuiteAccessToken($suiteTicket); Log::i("[Activate] getSuiteToken: " . $suiteAccessToken); //获取永久受权码以及corpid等信息,持久化,并激活临时受权码 $permanetCodeInfo = ISVService::getPermanentCodeInfo($suiteAccessToken, $tmpAuthCode); Log::i("[Activate] getPermanentCodeInfo: " . json_encode($permanetCodeInfo)); $permanetCode = $permanetCodeInfo['permanent_code']; $authCorpId = $permanetCodeInfo['corp_id']; Log::i("[Activate] permanetCode: " . $permanetCode . ", authCorpId: " . $authCorpId); /** * 获取企业access token */ $corpAccessToken = ISVService::getIsvCorpAccessToken($suiteAccessToken, $authCorpId, $permanetCode); Log::i("[Activate] getCorpToken: " . $corpAccessToken); /** * 获取企业受权信息 */ $res = ISVService::getAuthInfo($suiteAccessToken, $authCorpId, $permanetCode); Log::i("[Activate] getAuthInfo: " . json_encode($res)); self::check($res); /** * 激活套件 */ $res = ISVService::activeSuite($suiteAccessToken, $authCorpId, $permanetCode); Log::i("[activeSuite]: " . json_encode($res)); self::check($res); } static function check($res) { if ($res->errcode != 0) { exit("Failed: " . json_encode($res)); } }
}`
这段代码执行完成之后主要是激活套件,只有激活套件之后,咱们才能够在测试企业的应用中看到咱们建立的应用。不然没法看到应用。
应用的客户端页面,即在手机端看到的首页
在demo中咱们会看到一个index.php和一个indexpc.php,一个是手机端的首页一个是pc端的首页。index.php的代码是:`<!DOCTYPE html>
<?php
require_once(__DIR__ . "/config.php");
require_once(__DIR__ . "/util/Http.php");
require_once(__DIR__ . "/api/Auth.php");
$corpId = $_GET['corpid'];
?>
<html>
<head>api
<title>jsapi demo</title> <link rel="stylesheet" href="/public/stylesheets/style.css" type="text/css" /> <!-- config中signature由jsticket产生,若jsticket失效,则signature失效,表现为dd.error()返回“权限校验失败”之错误。 --> <!-- 在请求新的jsticket以后,旧的ticket会失效,致使旧ticket产生的signature失效。 --> <script type="text/javascript">var _config = <?php echo Auth::isvConfig($corpId);?></script> <script type="text/javascript" src="/public/javascripts/zepto.min.js"></script> <script type="text/javascript" src="https://g.alicdn.com/ilw/ding/0.8.9/scripts/dingtalk.js"></script>
</head>
<body>
<button class="btn btn-block btn-default chooseonebtn">选择朋友发消息</button>
<button class="btn btn-block btn-default phonecall">给朋友打电话</button>
</body>
<script type="text/javascript" src="/public/javascripts/logger.js"></script>
<script type="text/javascript" src="/public/javascripts/demo.js"></script>
</html>`
在这个里面咱们能够看到一个corpid的参数,这个是企业的id,目前是咱们的测试企业的id,这个参数能够在咱们建立的测试企业的管理页面看到。在执行的receive.php中,咱们能够看到有一个日志,一个是isv.log,在这个里面也能够获取到corpid。而在index.php中这个是变量,因此咱们在建立应用时的主页地址,能够增长corpid这个参数,即index.php?corpid=。
当全部的配置都弄成功之后,咱们能够得手机端点击应用获取到userid。即免登陆成功。
须要注意的是
回调地址必须有效
套件必须激活
相关文档:
钉钉开发官网地址app