“会话信息已丢失,请重新登录”错误分析与解决方案
问题描述:
通过SDK调用金蝶云星空API,程序报错提示“会话信息丢失,请重新登录”。
原因分析:
客户所使用的第三方系统登录授权信息,在金蝶云星空产品端进行参数校验时,校验没有通过,返回会话信息已丢失,请重新登录的错误信息。
解决方案:
1、升级SDK为最新版本
前往OpenAPI网站的SDK中心下载最新版本的SDK>> 前往下载
2、检查配置文件
2.1 对比产品的第三方系统登录授权信息
确保配置文件的数据和第三方登录授权信息一一对应并且数据正确,如下图所示。
//第三方系统登录授权的账套ID <add key="X-KDApi-AcctID" value="5b3de0*******"/> //服务Url地址 (私有云和公有云都须配置金蝶云星空产品地址,K3Cloud/结尾) <add key="X-KDApi-ServerUrl" value="http://bj1-api.kingdee.com/galaxyapi/"/> //第三方系统登录授权的应用ID <add key="X-KDApi-AppID" value="202655_6f0vR+lH************************"/> //第三方系统登录授权的应用密钥 <add key="X-KDApi-AppSec" value="b52d7fae9********************"/> //第三方系统登录授权的用户 <add key="X-KDApi-UserName" value="webapi"/> //账套语系,默认2052 <add key="X-KDApi-LCID" value="2052"/> |
特别说明:
补丁版本为PT-146894 [7.7.0.202111]之前
第三方登录授权的集成用户必填某一用户,并且配置文件的X-KDApi-UserName的值也要为该用户。
补丁版本为PT-146894 [7.7.0.202111]及之后
如果勾选允许全部用户登录,则X-KDApi-UserName可以为用户列表的任一用户。
如果没有勾选,则X-KDApi-UserName需要在指定用户登录列表中。
2.2 检查配置文件是否被正确读取
配置文件是否被正确读取,可以在代码调试时对生成的K3CloudApi对象检查得知。
如果发现数据和配置文件中的数据不符,可能是由于:
①配置文件的存放位置不正确
以java语言的sdk8.0.3版本为例,其文件位置读取逻辑为:最优先在项目根目录下查找kdwebapi.properties文件,如果找不到,则到资源文件目录下查找kdwebapi.properties文件。
解决配置文件存放位置问题的方法:将配置文件放到项目根目录下。
②配置文件的字符编码不正确
如果集成用户名称中含有中文名,则配置文件的字符编码必须是utf-8。
如果Java语言的sdk版本为7.9.2,则需要升级到8.0.3版本或以上才可解决该问题。
3、查看cloud日志错误信息
3.1 获取cloud日志
3.1.1 私有云客户(自有服务器搭建金蝶云星空产品) 获取cloud日志
步骤1:联系客户公司IT人员确认并登录到部署安装金蝶云星空产品的服务器。
步骤2:打开IIS查找日志信息
鼠标点击K3Cloud节点,右键选中浏览,进入到文件路径中,查看日志信息。
示例中的文件路径为:D:\Program Files (x86)\Kingdee\K3Cloud\WebSite\App_Data\Log
注意:真实路径以客户环境为准。
3.1.2 公有云客户(订阅金蝶云星空)获取cloud日志
运维提单获取云服务近期日志信息
详细操作指南:https://vip.kingdee.com/article/153972738560668928
3.2 从日志中查找对应错误信息
3.2.1 根据日志查询WebApi信息
打开日志进行搜索关键字WebApiModule,如果查询到则可以初步判断,用户通过SDK与金蝶云星空产品之间有数据交换,则进一步分析问题。
如果查找不到,则有以下可能:
①私有云客户没有开启webapi日志,因此不会记录webapi请求的错误信息。
webapi日志开启方法:https://vip.kingdee.com/knowledge/specialDetail/229961573895771136?category=229963554177453824&id=298122933035956480&productLineId=1
②sdk请求的地址和cloud日志所在的服务器地址不一致。
导致该情况的原因非常多,可能是配置文件的ServerUrl不正确,可能是配置文件存放位置不正确导致没有正确读取,可能是cloud日志的来源服务器不正确等等。
3.2.2查找webapi请求返回的错误信息
如果查找到含有ERROR - WebApiModule并且发生时间和请求报错时间一致的信息,则可以根据具体的错误信息定位问题。
3.3根据错误信息分析原因和常见的解决办法
3.3.1 Fail to VerifyThirtyPassport:The passport is not exists or disabled
原因分析:
客户的第三方登录授权信息不存在或者被禁用了。
解决方案:
登录金蝶云星空业务站点管理中心,通过Administrator进入第三方登录授权界面,查看调用API的所使用的第三方登录授权信息是否在下图列表中,并且禁用状态为否。
3.3.2 Fail to RestoreSessionByApi:用户:???不存在,请采用其他认证方式登录或者联系管理员!
可能一:
原因分析:
错误信息中的用户名为?或者乱码时,说明系统读取集成用户错误,如果集成用户名中含有中文字符,则可能是配置文件的字符编码不为utf-8,因此无法正确读取。
解决方案:
①更换集成用户名为纯英文名。
②如果集成用户名称中含有中文名,则配置文件的字符编码必须是utf-8。
如果Java语言的sdk版本为7.9.2,则需要升级到8.0.3版本或以上。
可能二:
原因分析:
集成用户在用户列表中不存在。
解决方案:
进入用户列表,检查使用的集成用户是否存在,配置文件中的集成用户是否与用户数据中的用户名称一致。
可能三:
原因分析:
该集成用户不具备操作单据的许可权限。
解决方案:
进入用户列表,检查使用的集成用户是否拥有许可权限,如果没有需要设置对应的许可分组。
3.3.3 Fail to RestoreSessionByApi:时间戳验证失败,请求链接已失效,请重试!
原因分析:
第三方登录授权的链接有效时间不正确。
解决方案:
检查第三方登录授权配置中的链接有效时间是否为0,如果是,改为默认值10即可。
3.3.4 Fail to VerifyThirtyPassport:Fail to verify X-KD-Signature(from passport)
原因分析:
应用id或应用密钥无法正确解析。
解决方案:
检查配置文件的应用id和应用密钥等数据。
4、若前三个步骤无法定位并解决问题,请将日志打包或截图给提单处理人员,进一步分析问题。
“会话信息已丢失,请重新登录”错误分析与解决方案
本文2024-09-23 04:02:05发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-162686.html