釘釘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

相關文章
相關標籤/搜索