钉钉isv免登录

钉作为团队内部人员的通讯软件被原来越多的企业所应用,同时钉钉支持接入第三方应用和企业内部个人应用,即isv接入和企业接入。而我现在要说的是isv接入中的必要条件,isv免登录。
准备工作
钉钉有详细的开发文档,这个是开发文档的链接地址,其中有一个isv的接入指南,这上面介绍了isv是如何接入。
第一步:注册钉钉企业账号。在这里可以看到
第二步:成为钉钉开发者,链接地址
第三步:是开发套件。
首先我们需要创建套件
clipboard.png
点击套件的创建,会出现下面的画面
clipboard.png
这些在开发文档上面都有介绍。在这个画面中主要是回调url。钉钉为php开发者写了一个关于php的demo,demo地址,这个里面有一个config.php,里面的参数是需要我们进行填写

<?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中。
然后需要创建应用

clipboard.png

主页的地址就是我们点击应用进入的地址。
创建完应用以后,APPID即可写上应用的id。
注册测试企业

clipboard.png

clipboard.png
管理员账号可以写已经注册的钉钉的手机号码,如果这里随便写个账号的话,注册完成以后需要绑定你已经注册的钉钉账号。当所有的工作完成以后我们可以用这个钉钉账号,登陆钉钉app,找到你的测试企业,在测试企业的应用中就会有你创建的应用。
创建完成测试企业以后,我们需要对测试企业进行授权。

clipboard.png
当点击授权以后,钉钉会向我们写的回调url,即receive.php推送`/**

 * 临时授权码
 */
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");
/**

  • 激活ISV套件方法类
    */

class Activate
{

/**
 * 某个企业的临时授权码在成功换取永久授权码后,开放平台将不再推送该企业临时授权码。
 */
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>

<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。即免登录成功。
需要注意的是
回调地址必须有效
套件必须激活
相关文档:
钉钉开发官网地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值