ali-sdk / node-dingtalk

node sdk for dingtalk

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

新需求:钉钉E应用的AppKey和AppSecret创建dingtalk客户端

Akimotorakiyu opened this issue · comments

新需求:钉钉E应用的AppKey和AppSecret创建dingtalk客户端

/**
   * Client 构造函数
   * @param {Object} options 配置参数
   *  - {String} corpid - 企业ID
   *  - {String} corpsecret - 企业秘钥
   *  - {String} host - 钉钉服务接口地址
   *  - {Object} [requestOpts] - urllib 默认请求参数
   * @constructor
   */
  constructor(options) {
    assert(options.corpid, 'options.corpid required');
    assert(options.corpsecret, 'options.corpsecret required');
    assert(options.host, 'options.host required');

    this.options = Object.assign({
      accessTokenLifeTime: (7200 - 1000) * 1000,
      jsapiTicketLifeTime: (7200 - 1000) * 1000,
    }, options);
}

构造函数里面必须要corpid和corpsecret

欢迎 PR 。

dingding 这块很难写单元测试,就很难维护。

发现了这个,所以问题。。。解决了。
appkey就等价于corpid,appsercert等价于corpsecret
经过测试,可以使用 真的是很神奇

if (!accessToken) {
      let url;
      let data;
      if (appid) {
        url = `${this.options.host}/sns/gettoken`;
        data = { appid, appsecret };
      } else {
        url = `${this.options.host}/gettoken`;
        data = { corpid, corpsecret };
      }
      const response = await this.request(url, { data });
      const accessTokenExpireTime = Date.now() + this.options.accessTokenLifeTime;
accessToken = response.access_token;