找回密码
 立即注册

QQ登录

只需一步,快速开始

Eric.Liang 讲师达人认证 悬赏达人认证 活字格认证
超级版主   /  发表于:2021-6-11 18:25  /   查看:4474  /  回复:0
本帖最后由 Erik.Xue 于 2021-11-15 16:55 编辑

相信用友的代理商对企企云都不是很陌生,最近我们有很多用友的伙伴除了原有的用友业务之外,也在做企企云的业务,所以我花了些功夫去了解了企企云的数据集成的方案

背景
企企云是一个云平台,数据的集成不能像U8一样直连数据库,同时,它的数据调用和用友的openapi也是完全不同的
企企云使用的是亚马逊云,所以数据的集成需要走亚马逊云的AWS请求机制,通过认证之后才能正常的调用数据请求接口

前期准备先了解企企云的接入方式
接入流程 · GitBook (77hub.com)

从教程中不难发现,接入流程主要分为三大部分
1.申请安全秘钥
2.通过安全秘钥获取openid
3.实现AWS请求机制
4.调用对应的企企云接口

不得不吐槽一句,这个接入文档是真的不易看懂,只有对应的JAVA SDK,写的也很简单,根本没有标明其他语言的写法。这真的是万里长征第一步就被绊倒了


不过这都不是阻碍我前进的理由,在多方的考察下,终于摸索出了C#对接企企云实现数据请求的道路~

具体做法
1.申请安全秘钥,话不多说,使用企企云之后自然会去申请

2.通过安全秘钥获取openid

官方文档上其实就是寥寥几行,大家千万别被这个文档骗了,其实要做的事情有很多
首先,你要知道openid的请求地址,以及请求方式。
请求地址:https://openapi.77hub.com/auth/openid?requestId=anyword&accessKeyId=LKJSDAFJLSKDJFK&redirectUrl=https://www.77hub.com/
请求方式:GET

也就是说,你需要在浏览器中输入以上地址,拼接对应的 grantType, requestIdaccessKeyIdredirectUrl
当你输入完这些参数之后,访问会自动跳转到企企云的授权页面(requestId可以随意指定,会随openid返回到回调地址上。redirectUrl是授权完成后需要跳转的活字格页面)
注意:如果选择的是normal模式,那么在获取openid之前,还需要提供一个backurl给企企云,这个backurl是获取完openid之后自动调用的接口地址,比如你提供的backurl是http://xxxx.com,企企云授权完成后,获取的openid就会随着backurl返回,比如http://xxxx.com?openid=xxx&requestId=xxx
可以通过解析url去获取openid,也可以通过提供一个get请求的url接口地址,在接口中直接将openid等信息存储到数据库中供后续接口调用时使用。

活字格中的实现
· 先创建一个Config数据表,用于存储后续接口调用的accessKeyId,secretAccessKey,openid,service,region

· 使用服务端命令作为openid的backurl,接收到openid后存储到Config数据表中
image.png979697265.png

因为企企云使用的亚马逊的AWS服务器,所以需要通过AWS的授权获取openid才能访问企企云的接口。

按照上的配置,我们的页面跳转URL如下:
https://openapi.77hub.com/auth/openid?requestId=xxx&accessKeyId=xxx&grantType=code&redirectUrl=http://xxx/customapi/get77hubdata/getopenid


所以接下来我们要在活字格中可以通过点击按钮页面跳转去跳转接口url获取openid。

当然大家不要担心,我们已经写好了通过AWS鉴权获取openid的webapi,只需要将两个dll文件上传至设计器即可:
显然,没有直接可用的代码,不过别担心,这一部分的逻辑我已经完成了。大家只需要在活字格中按照教程操作即可
在活字格中上传附件中的serverAPI,在serverAPI中我已经实现了AWS版本4的签名验证。
image.png819934081.png


然后设置对应的页面跳转地址:

image.png972627563.png

运行后,点击页面跳转命令按钮:
image.png801383666.png

然后就会跳转到企企云的登录验证页面:
image.png85621642.png

输入账号密码登录;

选择对应的企业:
image.png504728087.png

就会自动跳转到redireUrl页面中,可以看到我们已经通过了验证,拿到了openid并存入到了config表中。
image.png112208556.png

通过上面的操作我们可以将openid存储到数据表中,除了openid,数据库中还存储了其他字段

service和region字段存储项分别为execute-api,cn-north-1(这是从企企云的文档找到的,如果有疑问,可以和企企云的技术详细咨询下)

接下来,我们使用企企云的list接口进行测试。

请求参数分为两个部分,第一部分是接口请求的参数对象
如以下企企云接口文档,就会作为我们参数的第一部分,参数层级必须为postjson->json->参数对象(为什么这么多层级,是因为AWS签名格式固定要求)
image.png811263122.png
image.png119791869.png

同时注意你的postjson和json以及参数对象层需要勾选JSON序列化
image.png571286010.png

剩下的逻辑就交给后端的ServerAPI实现了
只需要将返回值返回给前端页面显示即可
image.png796428832.png

因为返回值是个JSON,你也可以通过导入JSON数据到单元格的方式去进行解析,当然,我们服务端命令中也有了新的功能,JSON反序列化命令,去实现在服务端解析JSON,循环存储到数据表中,具体返回数据如何解析和使用,看自己的实际业务来定哈~
帮你打开活字格更神奇的功能:九十四,JSON反序列化命令实战应用
https://gcdn.grapecity.com.cn/fo ... 92688&fromuid=51381
(出处: 葡萄城产品技术社区)


因为涉及到最终用户的数据虎丘,动图效果就不展示了~大家见谅哈
数据请求的截图来一波
image.png965285949.png

dll我已经帮大家放在了示例工程文件中,请自行取用~
企企云数据集成模板.fgcc (1.1 MB, 下载次数: 212)

0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部