Skip to main content

背景信息

企业通讯录(用户名、用户职位、部门名称)是企业的重要敏感数据,根据服务商不同的应用部署方式有不同的要求,其中部分需要接入通讯录加密,否则无法上架应用市场。 钉钉为了满足“在开发者无法获取到敏感字段的前提下,在用户侧获取这些敏感字段”的需求,提供了安全渲染组件(open-data)解决方案,以提供更加安全良好的体验。

操作步骤

  1. 在前端页面中拼接用户登录态URL。 说明 登录态URL 的构成,主要依赖 回调URL(ISV自己的前端页面链接,比如应用首页URL、使用了H5渲染组件的页面URL等)。当在客户端跳转访问 登录态URL 后,最终会重定向到 回调URL
    1. 对回调 URL 进行 encode。 说明 步骤中均以 https://open.dingtalk.com/document 举例。
    2. 添加 固定前缀 http://auth.dingtalk.com/login?redirectUri=
    3. 再次进行 encode。
    4. 添加 固定前缀https://login.dingtalk.com/oauth2/auth?response_type=code&client_id=dingwa4tibze6jwz7mgv&scope=openid&state=dddd&redirect_uri=,拼接得到 登录态URL
    5. 在前端页面引入 open-data SDK。
      说明
      • SDK 脚本需要放在<head>标签中,并置于其他所有的<script>标签之前,否则SDK无法生效。
      • SDK 内容是动态返回的,请严格按照demo中的方式引入,不要保存到项目本地后打包引入。
    6. 前端页面加载 open-data 中的数据。
      1. 调用 DTOpenData.init 方法进行初始化。 说明 该方法会返回一个 Boolean 值,标识初始化成功或失败。如果初始化失败,通常因为步骤一的操作步骤执行有误,或登录态失效,需要重新构造“登录态URL”进行跳转访问。
      2. 当页面上有数据需要进行安全渲染时,需要在页面上构造 dt-open-data 元素,并正确设置其 open-type 和 open-id 属性。当dom元素设置完成后,需要调用 DTOpenData.update 方法,传入需要进行渲染的dom元素对象即可自动完成渲染。 说明 DTOpenData.update方法一次性传入的dom节点数量不可以超过200个,否则无法正常渲染。

SDK 使用示例

(可选)内容转译

消息通知模板内容转译

发通知消息时,可以在内容中以模板参数语法包含id,钉钉会将其替换为成员名或部门名,涉及服务端api:
  • 发送工作通知
需要在原接口参数上添加enable_id_trans字段且置为true,才能开启转译,仅第三方应用需要用到,企业内部应用可以忽略。 通讯录ID转译模板语法
其中 DEPARTMENT_ID 是数字类型的部门id,USER_ID 是用户ID,例如:
  • departmentName=1departmentName=1替换成部门id为“1”对应的部门名称,如“钉钉用户体验部”。
  • userName=00001userName=00001替换成userid为“lisi007”对应的用户名,如“李四”。

通讯录转译