react+antd开发钉钉应用学习3

准备为学校应用做免登。需要获取当前登录的用户信息,觉得除了免登,其他都可以在服务器端进行。

其他jsapi都是根据AccessToken来访问的。调试的话,用钉钉RC版+chrome。

免登参考这篇文章https://yq.aliyun.com/articles/53957#3

发送钉钉短信

logger . i ( "test2" );
DingTalkPC . ready (
    DingTalkPC . device . notification . alert ({
        message: "亲爱的" ,
        title: "提示" , //可传空
        buttonName: "收到" ,
        onSuccess : function () {
            /*回调*/
        },
        onFail : function ( err ) {}
    })

  
);

以上代码测试的时候能通过。

ready的参数可以是一个函数。这样也是可以的。

function ddtest (){
    DingTalkPC . device . notification . alert ({
        message: "亲爱的" ,
        title: "提示" , //可传空
        buttonName: "收到" ,
        onSuccess : function () {
            /*回调*/
        },
        onFail : function ( err ) {}
    })
}
logger . i ( "test2" );
DingTalkPC . ready (
    ddtest ()
);

以下代码,可以获取到code,具体参考java demo

function ddtest (){
    DingTalkPC . device . notification . alert ({
        message: "亲爱的" ,
        title: "提示" , //可传空
        buttonName: "收到" ,
        onSuccess : function () {
            /*回调*/
        },
        onFail : function ( err ) {}
    });
   logger . i ( "test3" );
   DingTalkPC . runtime . permission . requestAuthCode ({
    corpId: _config . corpId , //企业ID
    onSuccess : function ( result ) {
        logger . i ( result . code );
  
    },
    onFail : function ( err ) {}
})
}
logger . i ( "test2" );
DingTalkPC . ready (
    ddtest ()
);



获取到code后,就是把code传回服务器端,获取当前登录的用户信息,具体可参照

https://blog.csdn.net/jeryjeryjery/article/details/53199992

如果需要获取userid信息,

通过CODE换取用户身份

企业应用的服务器在拿到CODE后,需要将CODE发送到钉钉开放平台接口,如果验证通过,则返回CODE对应的用户信息。**此接口只用于免登服务中用来换取用户信息**

请求说明

Https请求方式: GET

https://oapi.dingtalk.com/user/getuserinfo?access_token=ACCESS_TOKEN&code=CODE

参数说明

参数 参数类型 必须 说明
access_token String 调用接口凭证
code String requestAuthCode接口中获取的CODE

返回结果

正确时返回示例如下:

1
2
3
4
5
6
7
8
{
     "errcode" : 0 ,
     "errmsg" : "ok" ,
     "userid" : "USERID" ,
     "deviceId" : "DEVICEID" ,
     "is_sys" : true ,
     "sys_level" : 0 | 1 | 2
}
参数 说明
userid 员工在企业内的UserID
deviceId 手机设备号,由钉钉在安装时随机产生
is_sys 是否是管理员
sys_level 级别,0:非管理员 1:超级管理员(主管理员) 2:普通管理员(子管理员) 100:老板

具体看钉钉文档。

因为域名需要在钉钉微应用里设置好,

对于客户端和服务端的域名不一样的情况,就不好处理。

需要配置node 服务器,支持客户端和服务器端。

如果用koa2框架。建议看下面的文章,写的非常的清晰。

https://blog.csdn.net/u010668495/article/details/70556712

https://blog.csdn.net/u010668495/article/details/70665204

在express中处理静态文件容易

在koa2中,需要选择中间件。koa2的中间件本质就是一个函数,实现了ctx和next两个参数,使用koa-router的话,只要ctx参数,应该是koa-router处理了next,或者是router是最后一环,不需要next了?。自己写中间件的话,还是要实现ctx next两个参数,并且在中间件函数中主动调用next()

阮一峰的文章中演示了用

const main = ctx => {
  ctx
.response.type = 'html';
  ctx
.response.body = fs.createReadStream('./demos/template.html');
};或者const path = require('path');
const serve
= require('koa-static');

const main
= serve(path.join(__dirname));
app
.use(main);

详见

http://www.ruanyifeng.com/blog/2017/08/koa.html

引入koa-static和koa-router后,

如果访问/,和访问/index.html有啥区别呢?koa-static 是放在koa-router前还是后好呢?

文中path 包 是nodejs内置的,

koa-body  vs koa-bodyparse  不知道啥区别,

用koa写一个中间件,当访问a.tt的时候,把相关的几个文件组合成一个文件输出也是可行的。



你可能感兴趣的:(项目,编程语言)