钉钉小程序 开发 PHP + 钉钉小程序 (企业内部应用)

钉钉小程序 开发 PHP + 钉钉小程序 (企业内部应用)

应公司需求 需要结合钉钉开发小程序 由于公司自用 所以选择了 企业内部应用 我在做之前和做的过程中 查不到几乎可用的资料 我就把我遇到的 能想起来的,给要接触的童鞋们 参考一下吧

钉钉文档: https://ding-doc.dingtalk.com/


目前钉钉的文档还没有完善的类似微信 有很多微信有的 钉钉还没有  希望将来可以支持吧

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

1.缓存

微信 :

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

钉钉:(简直想死)

包括get 也不会让你失望(有点难受  这附近代码  我重写优化了好几次 真的 )


2.loading(钉钉文档里 在我开发时  我找遍了 没有,我拿着微信的代码 ,有loading 但无文字 我就试了一个content 就可以了 避避坑)

钉钉:dd.showLoading({content: '正在加载',})

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

3.钉钉中我没有找到弹框 于是让前端同事给我写了一个

<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">是否去补齐签名?</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.在开发调试阶段 建议增加一个  ClearCache 否则 你setData 里面清除不掉  造成其他影响  清除缓存 文档中有

写过小程序js 这句就当没看见 js中每一个方法{}, (花括号后跟英文逗号) 最后一个方法不加。

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


6.钉钉小程序 每个页要单独保存 后编译 但是设置中 有批量保存快捷键 

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

7.网络请求

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

8.获取到的数据 要this.setData({}) 

data值仅在当页生效

9.开发工具(钉钉这个模拟器 还比较满意 可以分离出开发工具  有点类似android 开发了的感觉 总让我有一种android studio 的感觉)


我应该没有暴露什么吧  emmm。。。。。。。。。。。。

10.登陆钉钉账号后 开发工具左上角要选择自己在开发者后台创建的应用类型 

app.js 中 需要绑定企业id

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

onShow(options) { 
  // 从后台被 scheme 重新打开   
// options.query == {number:1} 
 }, 

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

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

}); 


11.获取token  我用的是TP5.1

/***  查看缓存内是否存在token信息 并检测是否过期
*  如过期 则重新获取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;
}

/***  请求钉钉接口获取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);
//根据userid 单独获取钉钉用户个人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);
}

钉钉获取小程序免登授权码

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

              }               
  })

11.webview

我做了个类似银行签名的东西 单个字单个字签字 然后拼在一起  注意webview白名单

webview 在模拟器 无法写字  canvas 画不上去 手机就没问题了 ,不知道是不是需要对应的事件js





*服务端API若是调用不成功,看服务端ip地址是不是在白名单中,本地服务器测试的话,重启路由器后ip是会变,

不在白名单 去开发者后台配置一下 就ok 。

*钉钉开发 会涉及到一些 功能权限  需要就开一下 如果没权限就是用 会提示没有权限  注意一下就好。

一些常见的坑 我都列出来了 也有可能有我想不起来的 或者我没接触到的 如果有看到的 有不懂 留言我们探讨

后续 维护 如果碰到坑 在补充

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,393评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,790评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,391评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,703评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,613评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,003评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,507评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,158评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,300评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,256评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,274评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,984评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,569评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,662评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,899评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,268评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,840评论 2 339

推荐阅读更多精彩内容