釘釘小程序 開發(fā) PHP + 釘釘小程序 (企業(yè)內(nèi)部應(yīng)用)

釘釘小程序 開發(fā) PHP + 釘釘小程序 (企業(yè)內(nèi)部應(yīng)用)

應(yīng)公司需求 需要結(jié)合釘釘開發(fā)小程序 由于公司自用 所以選擇了 企業(yè)內(nèi)部應(yīng)用 我在做之前和做的過程中 查不到幾乎可用的資料 我就把我遇到的 能想起來(lái)的卷仑,給要接觸的童鞋們 參考一下吧

釘釘文檔: https://ding-doc.dingtalk.com/


目前釘釘?shù)奈臋n還沒有完善的類似微信 有很多微信有的 釘釘還沒有? 希望將來(lái)可以支持吧

搞不明白的去微信看看文檔 基本能弄明白

1.緩存

微信 :

wx.setStorageSync("userid", data.data.userid)? ?
?wx.getStorageSync("userid", data.data.userid)

釘釘:(簡(jiǎn)直想死)

包括get 也不會(huì)讓你失望(有點(diǎn)難受? 這附近代碼? 我重寫優(yōu)化了好幾次 真的 )


2.loading(釘釘文檔里 在我開發(fā)時(shí)? 我找遍了 沒有叮阅,我拿著微信的代碼 判导,有l(wèi)oading 但無(wú)文字 我就試了一個(gè)content 就可以了 避避坑)

釘釘:dd.showLoading({content: '正在加載',})

微信:wx.showLoading({title: '加載中',})

3.釘釘中我沒有找到彈框 于是讓前端同事給我寫了一個(gè)

<view class="lightbox" style="{{light}}"></view><view class="xx-tbox fl fd" style="{{box}}">? <view class="nr-zi1">錄入簽名提示</view>? <view class="nr-zi2 bottom-x">是否去補(bǔ)齊簽名瓤檐?</view>? <view? onTap="cancel" class="link-1 fl right-x">取消</view>? <view? onTap="sure" data-userid="{{userids}}" class="link-2 fl">確定</view></view>


.lightbox{width:100%;z-index:101; height:100%;background-color:#333;filter:alpha(Opacity=20);-moz-opacity:0.2;opacity: 0.2; position: fixed; top:0px; left:0px;}? .xx-tbox{ width: 60%; margin: 20%; background-color: #fff; margin-top: 40%; height: 130px; z-index: 999;}? .nr-zi1{ width: 100%; font-size: 16px; text-align: center; line-height: 32px; margin-top: 15px;}? .nr-zi2{ width: 100%; font-size: 12px; text-align: center; line-height: 22px; padding-bottom: 15px;}? .link-1{ width: 49.5%; height: 46px; line-height: 46px; font-size: 14px; text-align: center; color: #333; }? .link-2{ width: 49.5%; height: 46px; line-height: 46px; font-size: 14px; text-align: center; color: #71d398; }? .right-x{border-right-width: 1px; border-right-style: solid; border-right-color: #f4f4f4; }



5.在開發(fā)調(diào)試階段 建議增加一個(gè)? ClearCache 否則 你setData 里面清除不掉? 造成其他影響? 清除緩存 文檔中有

寫過小程序js 這句就當(dāng)沒看見 js中每一個(gè)方法{}其障, (花括號(hào)后跟英文逗號(hào)) 最后一個(gè)方法不加。

ClearCache(event){?
? ? dd.removeStorage({?
? ? ? key: 'info',? ?
? ?success: function(){?
? ? ? }? ? ?
?});? ?
?},


6.釘釘小程序 每個(gè)頁(yè)要單獨(dú)保存 后編譯 但是設(shè)置中 有批量保存快捷鍵?

微信小程序 是只要ctrl + s 就保存所有 + 編譯

7.網(wǎng)絡(luò)請(qǐng)求

dd.httpRequest({? ? ? ? ? ? ? ? ?
????url: 'http://url?userid='+userid,? ? ? ? ? ? ? ? ?
????method: 'POST',? ? ? ? ? ? ? ? ?
????data: { userid: userid},? ? ? ? ? ? ? ? ?
????dataType: 'json',? ? ? ? ? ? ? ? ?
?????success: (res) => {? ? ? ? ? ? ? ? ?
? // console.log('emmm res======' + res);? ? ? ? ?
? ? },? ? ? ? ? ?
?})?

8.獲取到的數(shù)據(jù) 要this.setData({})?

data值僅在當(dāng)頁(yè)生效

9.開發(fā)工具(釘釘這個(gè)模擬器 還比較滿意 可以分離出開發(fā)工具? 有點(diǎn)類似android 開發(fā)了的感覺 總讓我有一種android studio 的感覺)


我應(yīng)該沒有暴露什么吧? emmm衙傀。梢为。抵窒。弛针。。李皇。削茁。。掉房。茧跋。。圃阳。

10.登陸釘釘賬號(hào)后 開發(fā)工具左上角要選擇自己在開發(fā)者后臺(tái)創(chuàng)建的應(yīng)用類型?

app.js 中 需要綁定企業(yè)id

App({? onLaunch(options) {?
? // 第一次打開? ?
?// options.query == {number:1}? ?
?console.info('App onLaunch');? ?
?console.info(options);?
this.globalData.corpId = options.query.corpId;?
?},?

onShow(options) {?
? // 從后臺(tái)被 scheme 重新打開? ?
// options.query == {number:1}?
?},?

?onHide() {
? ? console.log('App Hide');?
?},?

globalData: {? ?
?corpId: "",? ? hasLogin: false,
?},

});?


11.獲取token? 我用的是TP5.1

/***? 查看緩存內(nèi)是否存在token信息 并檢測(cè)是否過期
*? 如過期 則重新獲取token
* JAM
* @return type $token
*/
public function getAccessToken()? ?
{
$appkey = APP_KEY;
$appsecret = APP_SECRET;
$expire_time = Cache::get('expire_time');
$access_token = Cache::get('access_token');
//如果token緩存存在
if(!empty($access_token)){
????if($expire_time < time()){
$token = $this->get_token($appkey,$appsecret,$token_file_name);
????} else {
$token = $access_token;
????}
} else {//否則token緩存不存在
$token = $this->get_token($appkey,$appsecret,$token_file_name);
}
return $token;
}

/***? 請(qǐng)求釘釘接口獲取token
*? JAM
* @param? type $appkey
* @param? type $appsecret
* @return type $token
*/
public function get_token($appkey,$appsecret)
{
$url = "https://oapi.dingtalk.com/gettoken?appkey=".$appkey."&appsecret=".$appsecret;
$get_result = json_decode($this->http($url),true);
if($get_result['errcode'] == '0'){
? ?$new_token = (object)[];
? ?$token = $get_result['access_token'];?
? ?$new_token->expire_time = time() + 7000;
? ?$new_token->access_token = $token;
Cache::set("expire_time",time() + 7000);
Cache::set("access_token",$token);
// $this->set_php_file($token_file_name,json_encode($new_token));
} else {
$token = 'get_token_error';
}? ? ? ?
return $token;}

/*** 返回用戶信息
* @return type $value 用戶信息
*/
public function getUserInfo()
{
$code = input('param.authCode');
$token = getAccessToken();
$url = 'https://oapi.dingtalk.com/user/getuserinfo?access_token=' . $token . '&code=' . $code;
$result = http_request_get($url);
$res = json_decode($result,true);
//根據(jù)userid 單獨(dú)獲取釘釘用戶個(gè)人info
$url1 = 'https://oapi.dingtalk.com/user/get?access_token=' . $token . '&userid=' . $res['userid'];$result1 = http_request_get($url1);
$res1 = json_decode($result1,true);
$info['code'] = $result?1:0;
$info['res'] = $res;
$info['res1'] = $res1;
return json_encode($info);
}

釘釘獲取小程序免登授權(quán)碼

dd.getAuthCode({?
? ? ? ? ? ? ? ? success:(res)=>{?
? ? ? ? ? ? ? ? var authCode = res.authCode? ?
? ? ? ? ? ? ? }, fail:function(err){

????????????? }? ? ? ? ? ? ? ?
? })

11.webview

我做了個(gè)類似銀行簽名的東西 單個(gè)字單個(gè)字簽字 然后拼在一起? 注意webview白名單

webview 在模擬器 無(wú)法寫字? canvas 畫不上去 手機(jī)就沒問題了 厌衔,不知道是不是需要對(duì)應(yīng)的事件js





*服務(wù)端API若是調(diào)用不成功璧帝,看服務(wù)端ip地址是不是在白名單中捍岳,本地服務(wù)器測(cè)試的話,重啟路由器后ip是會(huì)變睬隶,

不在白名單 去開發(fā)者后臺(tái)配置一下 就ok 锣夹。

*釘釘開發(fā) 會(huì)涉及到一些 功能權(quán)限? 需要就開一下 如果沒權(quán)限就是用 會(huì)提示沒有權(quán)限? 注意一下就好。

一些常見的坑 我都列出來(lái)了 也有可能有我想不起來(lái)的 或者我沒接觸到的 如果有看到的 有不懂 留言我們探討

后續(xù) 維護(hù) 如果碰到坑 在補(bǔ)充

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末苏潜,一起剝皮案震驚了整個(gè)濱河市银萍,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌恤左,老刑警劉巖贴唇,帶你破解...
    沈念sama閱讀 217,542評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異飞袋,居然都是意外死亡戳气,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門巧鸭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)瓶您,“玉大人,你說(shuō)我怎么就攤上這事⊙礁ぃ” “怎么了贸毕?”我有些...
    開封第一講書人閱讀 163,912評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)夜赵。 經(jīng)常有香客問我明棍,道長(zhǎng),這世上最難降的妖魔是什么油吭? 我笑而不...
    開封第一講書人閱讀 58,449評(píng)論 1 293
  • 正文 為了忘掉前任击蹲,我火速辦了婚禮,結(jié)果婚禮上婉宰,老公的妹妹穿的比我還像新娘歌豺。我一直安慰自己,他們只是感情好心包,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評(píng)論 6 392
  • 文/花漫 我一把揭開白布类咧。 她就那樣靜靜地躺著,像睡著了一般蟹腾。 火紅的嫁衣襯著肌膚如雪痕惋。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,370評(píng)論 1 302
  • 那天娃殖,我揣著相機(jī)與錄音值戳,去河邊找鬼。 笑死炉爆,一個(gè)胖子當(dāng)著我的面吹牛堕虹,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播芬首,決...
    沈念sama閱讀 40,193評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼赴捞,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了郁稍?” 一聲冷哼從身側(cè)響起赦政,我...
    開封第一講書人閱讀 39,074評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎耀怜,沒想到半個(gè)月后恢着,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,505評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡财破,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評(píng)論 3 335
  • 正文 我和宋清朗相戀三年掰派,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片狈究。...
    茶點(diǎn)故事閱讀 39,841評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡碗淌,死狀恐怖盏求,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情亿眠,我是刑警寧澤碎罚,帶...
    沈念sama閱讀 35,569評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站纳像,受9級(jí)特大地震影響荆烈,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜竟趾,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評(píng)論 3 328
  • 文/蒙蒙 一憔购、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧岔帽,春花似錦玫鸟、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至贾费,卻和暖如春钦购,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背褂萧。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工押桃, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人导犹。 一個(gè)月前我還...
    沈念sama閱讀 47,962評(píng)論 2 370
  • 正文 我出身青樓唱凯,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親锡足。 傳聞我的和親對(duì)象是個(gè)殘疾皇子波丰,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容