这是由于钉钉沙箱环境(即钉钉微应用)的权限机制导致的。
在钉钉沙箱环境中,每个微应用的生命周期被限制在一个会话内。这意味着当一个微应用被打开时,它将获得一个临时的唯一标识符(通过 dd.runtime.getAppKey()
获取)和一个会话标识符(通过 dd.runtime.getSessionKey()
获取)。这些标识符在微应用的整个生命周期内保持不变。
然而,当用户关闭并重新打开同一个微应用时,新的会话将被创建,并且旧的会话将不再可用。这意味着你不能再访问旧的会话中的数据或调用其权限接口。这就是为什么你在第二次调用时收到错误消息 "ERROR 4040: Do not support the current e"。
为了解决这个问题,你需要确保你的微应用在处理关闭和重新打开的情况。这可能包括保存关键数据到本地存储,并在重新打开时从那里恢复数据,或者实现一种机制来处理旧会话的结束和新会话的开始。