本文目录一览:
js-signature 怎么验证签字没有输入内容
确认签名算法正确,可用t=jsapisign页面工具进行校验。也就是你自己后台生成签名要和微信校验算法生成的签名一致才可以(可能大小写不同)。注意:签名生成规则如下:参与签名的字段包括有效的jsapi_ticket(获取方式详见微信JSSDK文档),noncestr(随机字符串,由开发者随机生成),timestamp(由开发者生成的当前时间戳),url(当前网页的URL,不包含#及其后面部分。注意:对于没有只有域名没有path的URL,浏览器会自动加上/作为path,如打开/)。特别注意:你在利用参数生成签名的时候,要对所有待签名参数按照字段名的ASCII码从小到大排序(字典序)后,使用URL键值对的格式(即key1=value1key2=value2…)拼接成字符串string1。这里需要注意的是所有参数名均为小写字符。我的最开始的错误就是没有注意到生成签名的那几个参数要按照key=value的样式连接成一个字符串,然后在sha1加密生成。/****Java写的参数拼接算法***/String[]paramArr=newString[]{"jsapi_ticket="+jsapi_ticket,"timestamp="+timestamp,"noncestr="+nonce,"url="+jsurl};Arrays.sort(paramArr);//将排序后的结果拼接成一个字符串Stringcontent=paramArr[0].concat(""+paramArr[1]).concat(""+paramArr[2]).concat(""+paramArr[3]);System.out.println("拼接之后的content为:"+content);确认config中nonceStr(js中驼峰标准大写S),timestamp与用以签名中的对应noncestr,timestamp一致。确认url是页面完整的url(请在当前页面alert(location.href.split('#')[0])确认),包括'http(s)://'部分,以及'?'后面的GET参数部分,但不包括'#'hash后面的部分。确认config中的appid与用来获取jsapi_ticket的appid一致。确保一定缓存access_token和jsapi_ticket。确保你获取用来签名的url是动态生成的,动态页面可参见实例代码中php的实现方式。如果是html的静态页面在前端通过ajax将url传到后台签名,前端需要用js获取当前页面除去'#'hash部分的链接(可用location.href.split('#')[0]获取),因为页面一旦分享,微信客户端会在你的链接末尾加入其它参数,如果不是动态获取当前链接,将导致分享后的页面签名失败。
如何使用Createjs来编写HTML5游戏EaselJS简介
CreateJS
CreateJS 是一套可以构建丰富交互体验的 HTML5 游戏的开源工具包,旨在降低 HTML5 项目的开发难度和成本,让开发者以熟悉的方式打造更具现代感的网络交互体验。
CreateJS 中包含:
EaselJS:用于 Sprites、动画、向量和位图的绘制,创建 HTML5 Canvas 上的交互体验(包含多点触控),同时提供 Flash 中的“显示列表”功能。
TweenJS:一个简单的用于制作类似 Flash 中“补间动画”的引擎,可生成数字或非数字的连续变化效果。
SoundJS:一个音频播放引擎,能够根据浏览器性能选择音频播放方式。将音频文件作为模块,可随时加载和卸载。
PrloadJS:帮助你简化网站资源预加载工作,无论加载内容是图形、视频、声音、JS、数据……
以上的Createjs介绍来自百度,不过通过介绍可以知道,虽然CreateJS看起来复杂,不过四个部分各有作用,其中最主要的就是EaselJS,其余三项不过是为他服务。
一.如何使用EaselJS
首先到 下载最新版的EaselJS,下载解压后可以在lib文件夹中找到easeljs-0.8.1.min.js,同时在压缩包中可以找到一个examples和tutorials目录,这两个目录中包含一些入门介绍和例子,有英语基础可以看看,DOC文件夹中包含easeljs所有的api。(同理,可以得到createjs包含的其他三项,其目录结构都与EaselJS相似)。
1.得到easeljs-0.8.1.min.js后,新建一个HTML5文件并导入之:
[html] view plain copy
script src="easeljs-0.8.1.min.js"/script
2.入口函数和创建canvas标签
[html] view plain copy
body onload="init();"
canvas id="game" width="1000" height="700" style="background-color: white"/canvas
/body
3.编写自己的javascript代码,在函数init()中首先应该使用HTML中的canvas标签来创建一个Stage,createjs中用到的所有元素,都是添加在这个stage当中的,添加后调用stage.update()方法即可使得添加的元素显示在页面上。在创建Stage时,可以直接使用Canvas的id来创建,也可以调用document.getElementById("game"),选取canvas来创建,没有区别。
[javascript] view plain copy
script
function init(){
var stage = new createjs.Stage("game");
.......
stage.update();
}
/script
二.使用EaselJS创建图形和文字
最简单的游戏都是由文字和图形组成,使用EaselJS添加文字和图形非常的简单。
1.添加文字
[html] view plain copy
var txt = new createjs.Text("HELLO","20px Times","#000");
Createjs中所有的元素都通过调用new createjs.XXXXX来创建,Text包含三个参数分别是显示的字符,字体及大小,最后是颜色。当然在创建完成后可以随意改变txt的x,y坐标和对其,居中以及内容等等的属性。例如:
[html] view plain copy
txt.x = 100;
txt.y = 100;
txt.text = "hello, world!"
完成后记得一定要把新创建的txt添加到stage中才能正常显示
小白想请问form表单提交数据到钉钉,这个接口该怎么写 求详细
一、免登问题
1.如何在App及后台获取企业及用户相关信息
(1)微应用主页支持使用$CORPID$模板参数表示corpid,用户访问微应用的时候钉钉将把$CORPID$替换成用户所属企业的corpid,例如
(2)获取用户信息需要通过免登服务,详情免登服务
2.钉钉微应用OAuth2授权打开一个应用时提示对不起您无权限查看该页面
可能的原因:
(1)如果其他应用正常,或者企业其他人打开应用没问题,可能是缓存问题引起,请清除下缓存
(2)参数redirect_uri的值没有做url编码
(3)redirect_uri的域名和微应用的域名不一致
3.免登Code的时效性
免登授权码是一次性的,团队(未认证的企业)失效时间五分钟
二、JSAPI问题
1.jsapi权限校验失败,错误码080003是什么原因
请先按照文档,先检查参数agentid传值是否正确,agentId查看方式:
(1)如果是isv应用,需要通过-获取企业的应用信息
(2)企业自建应用,通过oa后台查看开发环境准备
2.jsapi权限校验时返回{message:"权限校验失败",errorcode:3}
(1)首先检查用来生成签名(signature)的jsapi_ticket是否过期(jsapi_ticket有效期为7200秒,而且当你请求了新的ticket之后,旧的ticket就失效了)
(2)其次检查生成签名的Url参数,与调用dd.config 所在的url是否一致
生成签名用的url需要去除hash部分,e.g. 如果当前页面url是;n=456#opq,则用于生成签名的url是;n=456,可以使用调试工具来生成jsapi_ticket和signature,并和你实际使用的进行对比
(3)提示权限校验失败,errorcode:3,错误码52019,请检查corpid是否正确
3.使用JSAPI返回签名或者Ticket获取失败
JSAPI返回失败主要有两种错误
(1)[错误码:52011] [jsapi ticket 读取失败]
a.确认agentId参数正确传入
b.确认以传入agentId对应的企业身份获取过jsapi_ticket,也就是调用过get_jsapi_ticket方法
c.确认agentId对应的企业身份获取的jsapi_ticket没有过期.即在两个小时的有效期之内
(2)[错误码:52013][签名校验失败]
a.确认agentId参数正确传入
b.oa后台设置uri和权限校验uri不一致(去掉hash部分)
c.确认获得的jsapi_ticket为最新的,没有其他服务同时调用get_jsapi_ticket方法,导致生成签名的jsapi_ticket过期
d.确认生成jsapi签名正确,可以使用debug工具进行调试
4.ios 单页面应用更改url#后面的参数(如:localhost:8100/#/test1 变成 localhost:8100/#/test2),调用jsapi无效
ios单页面应用更改url参数,导致调用jsapi无效问题,将在2.7版本随新版本发布;
若是老版本(2.7以前版本),需要打开页面时重新授权,调用jspai即可正常
5.jspai 调用返回errCode7 错误原因
(1)请查看在dd.config的jsApiList中,是否已配置要使用的jsapi,未配置的话会报错
(2)ios 单页面应用提示 errCode7 Jsapi Should NOT CallselectorString
同问题5,单页面应用更改url参数,导致调用jsapi无效,老版本(2.7以前版本)需要重新授权,调用jsapi正常
(3)requestJsApis() not invoked,errorCode:7
dd.ready一定要在dd.config之后执行
6.如何获取JSAPI权限(需再详细些)
可以参照客户端开发文档,要使用的jsapi必须进行权限验证配置,在dd.config中进行配置,可参照权限验证配置-beta
7.工具栏颜色如何设置
在页面需要引入js文件的前提下,通过url参数设置导航栏颜色,参数名为dd_nav_bgcolor
比如微应用当前页面链接为:,要设置的颜色为FF112233(前两位默认FF,后面6位112233是对应的色值),可设置页面url为:
8.device.geolocation.get 提示unauthorized errcode 4
用户设备禁用了手机的定位功能
9. 钉钉发送会话消息,cid如何获取
使用场景示例:用户在微应用中拉起本地聊天窗口列表(通过调用jsapi-获取会话信息),选择某一个聊天窗口,微应用将收到钉钉返回的cid,通过这个cid会送会话消息。
a.前提条件:jsapi可使用,即已经配置到dd.config,且通过jsapi的权限校验
b.通过jsapi获取会话cid,详见获取会话信息
10.errorMessage:”err msg redirect_uri domain is not secure domain”,”errorCode”:”3”
在oa后台设置微应用首页地址(域名设置为可信域名,即可安全访问授权)
11.读取nfc芯片接口无法使用
[font=微软雅黑, 'Microsoft Yahei', 'Hiragino Sans GB', tahoma, arial, 宋体]目前nfc芯片接口只支持android(文档中已注明,请查看文档)
三、服务端API
1.调用管理通讯录接口返回43004,无效的HTTP HEADER Content-Type如何解决
管理通讯录的部分接口采用了POST请求,请求体使用JSON格式,请在HTTP请求头中设置Content-Type:application/json
2.上传文件不成功
使用multipart/form-data请求上传文件,需要附加文件标示信息,参数名为media;java示例代码为
HttpEntity requestEntity =MultipartEntityBuilder.create().addPart("media", new FileBody(file, ContentType.APPLICATION_OCTET_STREAM, file.getName())).build();
3.新建部门和员工信息为中文时,创建不成功
请检查编码格式,确认是utf-8编码
4.注册事件回调接口,每个corpid只能注册一个回调url吗
一个企业的一个套件,只能注册一个回调url
5.返回系统繁忙错误
(1)调试调用接口过程中出现,请先确保是否是JSON格式错误,比如POST时有的JSON里缺少了这种括号[ ]
(2)请检查url是否正确,如免登接口,通过code换取用户信息,/getuserinfo,实际应为/user/getuserinfo
(3)调用其他接口也返回系统繁忙,请您立刻在答疑群或论坛等反馈给钉钉人员
四、ISV接入问题
1.开发者平台创建套件校验url有效性问题
如果返回字符串不匹配,提示错误代码71009,可以通过以下常见问题确认具体原因:
a.可以通过将加密数据在本地解密下,看解密后的数据是否正确
b.查看是否是各字段名字错误,如timeStamp,却写成了timestamp
2.ISV接入回调接口没有suiteticket推送
注册套件之后,钉钉服务器会向填写的回调接口推送suite_ticket;接收到推送之后需要返回加密后的字符串“success”,如果不返回或返回错误,钉钉服务器将连续推送,直到推送次数超过100次,就不再推送;
此时需要进入开发者后台,进入套件管理页面,点击『重新推送』按钮,即可重新推送
3.回调地址接收钉钉服务器推送下来的数据,遇到计算解密文字错误
请查看加解密库和demo下载第二个步骤,见加解密库和demo下载
4.模拟测试企业发起授权所有套件,收不到临时授权码,而是change_auth
在开发者平台,目前授权行为只能发起一次,如已经收到临时授权码,模拟测试企业发起授权行为,收到change_auth事件;
测试企业解授权功能近期会上线,请关注文档及论坛更新
5.不存在的临时授权码
临时授权码只能使用一次,使用后再次使用会提示“不存在的临时授权码”
6. isv开发中,如果permanentCode没有存下来,如何获取到
目前没有办法获取,可以通过解除授权再次授权重新获取,解除授权功能暂时未开放,请在文档及论坛关注开放时间
7. 微应用性能测试提供的测试号码加不进去
微应用性能测试提供的3个测试号码,使用钉钉开放平台通讯录接口添加的话,有最多加入5个非认证企业限制;建议通过钉钉管理后台()的通讯录进行添加
8.微应用性能测试报告中的图像中,显示无权查看该页面可能原因
请将在测试的h5地址直接在钉钉会话中打开,如找一个聊天会话,把要测试的h5地址直接贴在会话中,并点击打开
a.如果打开提示无权查看该页面,则是h5地址问题;
b.如果打开正常,请联系钉钉值班同学反馈;
10.IP白名单问题,返回errcode":60020",访问ip不在白名单之中
调用钉钉API的机器需要配置在开发者平台中配置白名单
11.如何解除开发者平台的钉钉账号绑定
暂未提供开发者平台、云市场与钉钉账号解绑功能,请关注官方文档及论坛,若提供会同步更新
12.第三方ISV的套件开发完,如何与钉钉接入合作,让其他企业授权使用套件
ISV开发完成套件后,需要对微应用进行性能评测等(微应用性能评测),以及在钉钉应用市场进行上架后,才可被其他企业用户搜索到,并进行购买授权等操作;
可关注文档对应用市场内容的更新,可发送邮件至邮件组open-dingtalk@list.alibaba-inc.com进行咨询
13.isv如何获取企业中用的mobile和email
如果在开发者后台勾选了邮箱字段,则可以获取用户的email;mobile暂不提供
14.isv demo中返回创建套件时返回解密文字或corpid或者suiteKey不匹配
(1)在 ENV文件中
[font='Helvetica Neue', Helvetica, Arial, sans-serif]public static final String CREATE_SUITE_KEY = "suite4xxxxxxxxxxxxxxx";//首次创建套件校验url时使用;
public static final String SUITE_KEY = "";//已有套件时使用
(2)IsvReceiveServlet中
dingTalkEncryptor = new DingTalkEncryptor(Env.TOKEN, Env.ENCODING_AES_KEY, Env.SUITE_KEY);
第三个参数使用,如果首次创建校验url使用 Env.CREATE_SUITE_KEY,即
dingTalkEncryptor = new DingTalkEncryptor(Env.TOKEN, Env.ENCODING_AES_KEY, Env. CREATE_SUITE_KEY);
如果已有套件,使用Env.SUITE_KEY,且在ENV文件中将public static final String SUITE_KEY = "xxxx";赋值,即
dingTalkEncryptor = new DingTalkEncryptor(Env.TOKEN, Env.ENCODING_AES_KEY, Env.SUITE_KEY);
五、通用问题
1.isv接入demo
最近收到isv接入demo存在加解密失败问题,这部分demo正在更新,近期会更新(加解密库和demo下载)
2.钉钉https下使用oss Js SDK请求ERRSSLPROTOCOLERROR
六、常见需求及建议回复
1.发Ding的接口是否支持
钉钉不对外提供提供服务端ding接口
2.钉钉是否开放公告接口
钉钉暂不开放公告接口
3.钉钉是否提供审批、签到等微应用接口,便于第三方系统数据对接
目前只提供了管理日历接口接入,详见管理日历接入指南;
其他暂未提供
4.钉钉产品如何与企业内部的ERP系统实现对接
(1)可以基于钉钉开放平台开发一个报表的微应用,钉钉提供免登机制获取用户信息,报表权限由你开发的微应用进行控制
(2)微应用是基于H5开发的,因此可以基于H5开发图标展示
(3)企业内部的文件可以通过钉盘进行存储,也可以存放在自己的服务器,在微应用内进行下载
以上实现均需开发微应用