larksuite / node-sdk

larksuite open sdk for nodejs
MIT License
152 stars 31 forks source link

使用自建应用机器人发送消息出现偶发性错误【Invalid access token for authorization】 #111

Open abstain23 opened 2 weeks ago

abstain23 commented 2 weeks ago
const feishuClient = new lark.Client({
    appId: process.env.APP_ID || '',
    appSecret: process.env.APP_SECRET || '',
    disableTokenCache: false,
    loggerLevel: lark.LoggerLevel.error
  })

feishuClient.im.message.create ...

appid 和 appSecret是在环境变量传过去的,能保证是存在的,并且上一条消息是发送成功的,下一条就出现发送失败,token鉴权失败问题 image

abstain23 commented 2 weeks ago

这个完全是偶发性的,不知道什么时候会出现这个问题

mazhe-nerd commented 2 weeks ago

可以给一个可复现的demo代码和sdk的版本不?

abstain23 commented 2 weeks ago

版本 @larksuiteoapi/node-sdk": "^1.37.2" 没有办法稳定复现,偶发出现,我这边用的方式大概就是,注册路由的时候生成一个client,如下:

const feishuClient = new lark.Client({
    appId: process.env.APP_ID || '',
    appSecret: process.env.APP_SECRET || '',
    disableTokenCache: false,
    loggerLevel: lark.LoggerLevel.error
  })

然后接口请求的时候,使用上面的client发送消息给用户

feishuClient.im.message.create({
              params: {
                receive_id_type: 'email'
              },
              data: {
                receive_id: ctx.body.email,
                content: JSON.stringify({}),
                msg_type: 'interactive'
              }
            })

大概代码如上,主要问题是我们这边一天大概会发送几千条消息,上一条消息看了是成功的,某些时候下一条会出现上面token问题发送失败

mazhe-nerd commented 2 weeks ago

GET,感谢,我这边尝试先复现一下;

可以先做个失败重试机制,请求失败的话在请求一下,先解决业务问题;

如果方便的话,可以抓一下这个获取token接口的log id:/open-apis/auth/v3/tenant_access_token/internal,出现上面报错看起来是这个接口返回的token有些问题,抓到了定位会精准点儿。

abstain23 commented 2 weeks ago

GET,感谢,我这边尝试先复现一下;

可以先做个失败重试机制,请求失败的话在请求一下,先解决业务问题;

如果方便的话,可以抓一下这个获取token接口的log id:/open-apis/auth/v3/tenant_access_token/internal,出现上面报错看起来是这个接口返回的token有些问题,抓到了定位会精准点儿。

请问如何抓这个token接口的log id,用的sdk是没有直接调用接口了,目前是做了一次重试,看日志失败后,重试是ok的