精华内容
下载资源
问答
  • 解决java版本钉钉PC端demo跑起来访问不到当前员工信息的问题. 钉钉官网的例子存在bug,折腾了好久,才排查到问题. 原来是示例的代码有bug导致,钉钉PC端接入公司应用出问题.
  • 浏览器唤起钉钉PC端解决办法

    千次阅读 2020-07-14 18:41:07
    需求要实现浏览器页面的分享功能,需点击分享打开钉钉PC端的功能。 查看官方文档,只提供了打开对应某个人的协议方式: <a href="dingtalk://dingtalkclient/action/sendmsg?dingtalk_id={id}"></a>,...

    需求要实现浏览器页面的分享功能,需点击分享打开钉钉PC端的功能。

    查看官方文档,只提供了打开对应某个人的协议方式:
    <a href="dingtalk://dingtalkclient/action/sendmsg?dingtalk_id={id}"></a>,同时需要制定钉钉号。

    如果只是单纯唤起客户端,则可以考虑如下协议,尝试有效:

    dingtalk://dingtalkclient/page/link

    或者

    dingtalk://dingtalkclient/action/switchtab

    展开全文
  • Python Fiddler 钉钉PC端群回放视频爬取

    千次阅读 2020-07-19 14:57:36
    Python Fiddler 钉钉PC端群回放视频爬取 钉钉群里的回放视频被群管理员设置为不能下载,可是有时候又需要这些视频可以方便传阅和打开调倍速等等,而且还可以不用再打开PC端就可以直接看到视频多好啊,不过这该怎么...

    Python Fiddler 钉钉PC端群回放视频爬取

    钉钉群里的回放视频被群管理员设置为不能下载,可是有时候又需要这些视频可以方便传阅和打开调倍速等等,而且还可以不用再打开PC端就可以直接看到视频多好啊,不过这该怎么下载呢?
    在这里插入图片描述
    一、Fiddler 抓包
    1、首先要明白一个道理,只要是你能在电脑上看到听到的数据,这些数据都应该在你电脑存在过,即这些数据是可以访问和爬取的,这就是爬虫中的“可见即可爬”。不过至于爬不爬得到数据就看方法和技术了。

    Fiddler也被叫作“小提琴”,引用百度百科的说法:
    “Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的“进出”Fiddler的数据(指cookie,html,js,css等文件)。 Fiddler 要比其他的网络调试器要更加简单,因为它不仅仅暴露http通讯还提供了一个用户友好的格式。”

    Fiddler是应用比较广泛的抓包利器,下载的话去网上一搜到官网下载就行,配置和一些问题的解决可以参考这篇文章:网络爬虫中Fiddler抓取PC端网页数据包与手机端APP数据包

    2、开始抓包,先打开钉钉的PC端,
    然后打开Fiddler,希望在这一步之前你已经配置好Fiddler的一些设置了,不然抓包错误也是有可能的。
    接下来就直接点开待下载的视频就好了,坐等Fiddler抓包。
    在这里插入图片描述
    注意左下角的捕获按钮,保持这个状态。
    如果Fiddler界面太杂可以清除会话,右键弹出菜单,跟着图示所选清除会话,然后重新点开视频进行抓包。
    在这里插入图片描述
    抓包结果就会是下图所示,红框里的就是我们需要的视频链接
    在这里插入图片描述
    我们右键这个返回内容为video文件的链接,然后复制这个链接的URL,如下图所示
    在这里插入图片描述
    你将整个链接放到浏览器去访问来验证一下,正确的话会下载一个ts文件,这个ts文件就是视频的一个小片段。必要一提,MP4等格式的视频在传输过程中大多都是分段传输到我们电脑中的,若干个ts文件组成了一整个MP4文件,这也是为什么我们看视频的时候会出现“正在缓冲”的问题。
    后面我们用循环来遍历下载每个ts文件,在此之前你应该关闭之前提到的“捕获中”的按钮,因为Fiddler的存在会改变网络协议,导致爬虫中requests不能访问网页。

    二、ts视频片段爬取
    观察我们获取到的链接,就会发现链接中有个1.ts这个项,因为是同个视频的ts文件,也就是说整个链接都是不变的,变的只有.ts前面的编号而已。

    import requests
    import os
    
    headers = {
        'User-Agent': # 自行添加
    }
    path = "" #文件夹名称
    os.makedirs(path, exist_ok=True) # 自动创建文件夹
    index = 1
    while True:
        url = 'https://xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/{}.ts?auth_key=\
        xxxxxxxxx-x-x-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'.format(index)
        res = requests.get(url, headers=headers)
        if len(res.content) < 500: # 当爬取到的ts文件无效时退出循环,可以自己按情况调整大小,
        #这里我爬取的ts视频大多是31秒左右,大小在500K到1.5M之间,故我设置大小在500K一下为无效文件
            break
            
        # 将视频片段都放置到一个文件夹方便后期拼接
        with open(path + "/%04d.ts" % index, "wb")as f:
        #这里注意文件名的命名,因为我爬取的ts片段不会超过三位数,所以我将其命名为4位数的ts文件
        #这么做是为了方便后面拼接时视频顺序不要出错
            f.write(res.content)
        index += 1
    

    三、视频拼接
    在视频文件夹的对应框输入cmd,然后回车,可以直接进入当前文件夹目录。
    在这里插入图片描述
    输入下图指令进行拼接
    在这里插入图片描述
    copy指的是复制文件然后*.ts 代表此文件夹里的所有文件,然后新文件存为new.mp4,这里new.mp4可以自行更改。命令格式是copy+空格+/b +空格+*.ts+空格+文件名(如:new.mp4)

    大功告成了,在下载中可能会比较慢,就跟我们平时下载视频速度差不多,可能会稍微快一点,毕竟是直接访问视频链接的,改进方面可以加入多线程,可以提高下载速度。
    喜欢就点个赞吧!

    展开全文
  • 钉钉PC端开发 错误码:9 错误信息:签名校验失败 项目场景: 一个前后端分离的钉钉微应用程序在进入的时候报了这个错误。 因为这个项目已经上线部署了,之前开发没有遇到这个问题,上线之后也没有,重新看这个项目的...

    钉钉PC端开发 错误码:9 错误信息:签名校验失败

    项目场景:

    一个前后端分离的钉钉微应用程序在进入的时候报了这个错误。
    因为这个项目已经上线部署了,之前开发没有遇到这个问题,上线之后也没有,重新看这个项目的时候报这个错误。

    问题描述:

    错误码:9 错误信息:签名校验失败

    原因分析:

    一开始以为是钉钉自身迭代才产生的问题,后来发现是钉钉不支持路由模式
    在这里插入图片描述

    解决方案:

    一开始在网上找到一个解决办法:删除dd.config({})
    这个方法确实可以,但是使用这个方法之后就不能使用绝大部分钉钉的API了,包括通讯录调用。。。
    所以这个是一个很坑的解决方法。

    正常来说肯定是不能这样做的。
    后来打印前端传过来的各种信息之后,从URL中发现了问题:
    在这里插入图片描述

    从图片上看,带了个#号
    为什么会带这个#?
    这是VUE-ROUTER vue路由的经典产物。一般路由文件不设置路由模式的话,一般是默认hash模式,然后在浏览器访问的时候就会有一个#
    SO,这就很简单,把hash模式改成history模式问题就解决了
    在这里插入图片描述

    展开全文
  • 钉钉PC端开发

    千次阅读 2018-12-13 15:29:03
    第一步:建立一个微应用 第二步:获取配置信息    /// &lt;summary&gt; /// sha1加密 /// &lt;/summary&gt; /// &lt;param name="value"&.../return..

     

    第一步:建立一个微应用

    第二步:获取配置信息

      

            /// <summary>
            /// sha1加密
            /// </summary>
            /// <param name="value"></param>
            /// <returns></returns>
            public string Sha1Hex(string value)
            {
                SHA1 algorithm = SHA1.Create();
                byte[] data = algorithm.ComputeHash(Encoding.UTF8.GetBytes(value));
                string sh1 = "";
                for (int i = 0; i < data.Length; i++)
                {
                    sh1 += data[i].ToString("x2").ToUpperInvariant();
                }
                return sh1;
            }
    
            /// <summary>  
            /// 获取签名包  
            /// </summary>
            /// <param name="url">当前请求地址</param>
            /// <returns></returns>  
            public SignPackageEntity FetchSignPackage(string url)
            {
                var signPackage = new SignPackageEntity()
                {
                    agentId = Config.GetValue("DDAgentId"),
                    corpId = Config.GetValue("DDCorpId"),
                    timeStamp = Convert.ToInt64((DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0)).TotalSeconds).ToString(),
                    nonceStr = Guid.NewGuid().ToString(),
                    url = url,
                    jsticket = GetTicket()
                };
                if (signPackage.jsticket.IsEmpty())
                    return new SignPackageEntity();
                // 这里参数的顺序要按照 key 值 ASCII 码升序排序   
                signPackage.rawstring = "jsapi_ticket=" + signPackage.jsticket + "&noncestr=" + signPackage.nonceStr + "&timestamp=" + signPackage.timeStamp + "&url=" + signPackage.url;
                signPackage.signature = Sha1Hex(signPackage.rawstring).ToLower();
                return signPackage;
            }
            /// <summary>
            /// 获取ticket
            /// </summary>
            /// <returns></returns>
            public string GetTicket()
            {
                DingDingRequestBLL ddRequestBLL = new DingDingRequestBLL();
                string jsonStr = HttpMethods.HttpGet("https://oapi.dingtalk.com/get_jsapi_ticket?access_token=" + ddRequestBLL.Token);
                var result = jsonStr.ToObject<Dictionary<string, string>>();
                if (result["errcode"] != "0") return string.Empty;
                return result["ticket"];
            }

     

    第三部:编码测试

    var _config = {
                agentId: DDConfig.agentId,
                corpId: DDConfig.corpId,
                timeStamp: DDConfig.timeStamp,
                nonceStr: DDConfig.nonceStr,
                signature: DDConfig.signature,
                jsApiList: [
                    'runtime.info',
                    'biz.contact.choose',
                    'device.notification.confirm',
                    'device.notification.alert',
                    'device.notification.prompt',
                    'biz.ding.post',
                    'biz.util.openLink'
                ]
            };
            dd.config(_config);
            dd.ready(function () {
                dd.runtime.info({
                    onSuccess: function (info) {
                        logger.e('runtime info: ' + JSON.stringify(info));
                    },
                    onFail: function (err) {
                        logger.e('fail: ' + JSON.stringify(err));
                    }
                });
                dd.runtime.permission.requestAuthCode({
                    corpId: _config.corpId,
                    onSuccess: function (result) {
                        alert(result);
                        $.ajax({
                            url: "",
                            type: "get",
                            data: { code: result.code },
                            success: function (data) {
                                if (!data.type != 1) {
                                    alert(data.message);
                                }
                            },
                            error: function (msg) { alert(msg); }
                        })
                    },
                    onFail: function (err) {
                        alert("dd onFail result.code:" + JSON.stringify(err))
                    }
                });
            });

     

    展开全文
  • 钉钉PC端开发者版本下载及调试技巧

    万次阅读 2019-07-13 22:53:32
    前言 自从钉钉开发者网站更新后,翻遍整个网站都找不到钉钉的rc版本(开发者版本)下载地址,通过一些别的方式,终于搜索到这个开发者调试神器。 地址 请访问: ...file=3dc67737f241f13263...
  • 钉钉PC端数据存储目录解析

    千次阅读 2020-11-28 11:25:30
    相关目录作用 主要目录 %AppData%\DingTalk %LocalAppData%\DingTalk %LocalAppData%\DingTalk_63 表情缓存 %AppData%\DingTalk\defEmotion ...%AppData%\DingTalk\145608392_v2\AvatarFiles ...%LocalAppData%\DingT
  • 网络问题,例如:突然断网导致的,退出重新扫码登录钉钉就好了
  • 需要在body中加一个你想要展示的图片 它会默认抓取你的第一张图片 方式二: 相关链接: OGP:SEO优化开放内容OG协议 钉钉开放平台连接地址 <head> <meta charset="UTF-8"> , initial-scale=1.0"> 阿里云创新赋能平台...
  • 钉钉PCPC端钉钉清除缓存

    千次阅读 2018-04-18 18:49:00
    最近被钉钉PC端坑的要死要死的,一个缓存问题弄了我一天时间,去你大爷的,放在这里防止其他的人被坑。 1、右键点击微应用,选择devtools 2、展开的页面,就像web端的F12,勾选network-》Disable cache 具体如下:...
  • 后续想有时间研究一下PC端客户端的开发,看着官方文档,说的确实是比较简练,但也确实没看太明白,废了半天劲也没成功。后来经过无数次尝试,发现期待的弹窗竟然出现了,为了让其他人少走弯路,下面将自己的心得记录...
  • 钉钉微应用PC端开发

    千次阅读 2019-05-08 19:22:12
    钉钉微应用PC端踩得坑一 作为一个开发过钉钉E应用的人来说 开发PC端真是恶心他妈抱着恶心哭了,猝不及防的就会给你一个大水泡子 在开发之前一定要有PC端开发工具 找半天都没找到,最后咨询了钉钉的技术支持 才给了我一...
  • 在实现开发的h5页面的微应用在PC端打开时遇到了一个问题,PC端钉钉是采用iframe引入H5页面的,我使用了spring-security,由于在spring-security默认的x-frame-options是DENY(禁止iframe引入页面)的,所以导致在pc...
  • 仿钉钉后台自定义表单 ...pc端自定义表单,手机端扫码预览 用到jquery + jquery-ui + artTemplate + webpack artTemplate模板 运行之前请先安装依赖 npm install 开发预览运行 npm run server 打包 npm run build
  • 钉钉rc版开发工具,方便pc端调试,打开钉钉后,在浏览器中输入http://localhost:16888/就可以在浏览器中看到控制台了
  • pc端钉钉认证二维码扫码登录

    千次阅读 2020-03-16 15:36:48
    需要搞个网页版的钉钉扫码登录 先附上钉钉官方文档地址钉钉官方开发文档 2.实现 跟着里面的文档一步一步来就好了,不会看下这篇文章,很详细钉钉扫码授权登录第三方网站 (1.)template中 <template> <...
  • pc端钉钉点左边的菜单,如,聊天,联系人,右边的内容布局会变化。如果右边的布局都 写在一个fxml里面,这个fxml布局文件将非常非常大,并且难读。这方面有经验的可以交流一下怎么实现。
  • 但是钉钉官网写的太繁杂了,看了一天,硬是没看明白,最后,硬着头皮,一点点查资料,借鉴别人的代码,终于 研究 出来了,为了防止 年轻的码农 步入后尘,浪费时间,特此写一篇文章,记录一下,如有不懂,可邮件我,...
  • web PC端和移动端钉钉免登 js

    千次阅读 2018-05-15 19:42:34
    1.首先引用两个钉钉的js &lt;script type="text/javascript" src="http://g.alicdn.com/dingding/open-develop/1.6.9/dingtalk.js"&gt;&lt;/script&gt; &lt;script type...

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 172
精华内容 68
关键字:

钉钉pc端