钉钉isv免登陆

钉做为团队内部人员的通信软件被原来越多的企业所应用,同时钉钉支持接入第三方应用和企业内部我的应用,即isv接入和企业接入。而我如今要说的是isv接入中的必要条件,isv免登陆。
准备工做
钉钉有详细的开发文档,这个是开发文档的连接地址,其中有一个isv的接入指南,这上面介绍了isv是如何接入。
第一步:注册钉钉企业帐号。在这里能够看到
第二步:成为钉钉开发者,连接地址
第三步:是开发套件。
首先咱们须要建立套件
clipboard.png
点击套件的建立,会出现下面的画面
clipboard.png
这些在开发文档上面都有介绍。在这个画面中主要是回调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

clipboard.png

主页的地址就是咱们点击应用进入的地址。
建立完应用之后,APPID便可写上应用的id。
注册测试企业css

clipboard.png

clipboard.png
管理员帐号能够写已经注册的钉钉的手机号码,若是这里随便写个帐号的话,注册完成之后须要绑定你已经注册的钉钉帐号。当全部的工做完成之后咱们能够用这个钉钉帐号,登录钉钉app,找到你的测试企业,在测试企业的应用中就会有你建立的应用。
建立完成测试企业之后,咱们须要对测试企业进行受权。html

clipboard.png
当点击受权之后,钉钉会向咱们写的回调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

相关文章
相关标签/搜索