釘做爲團隊內部人員的通信軟件被原來越多的企業所應用,同時釘釘支持接入第三方應用和企業內部我的應用,即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