作业要求通过阿里云的SeverLess (FC)调用钉钉的服务端API获取到手机号信息。
先理清思路
- 创建FC(这面我使用的是老师的会议室模版)
- 创建一个钉钉的应用(可以使用已创建的)
- 给钉钉应用分配权限配置
- 在钉钉应用中修改(图中的应用首页地址和PC端首页地址是需要FC部署成功才会有,但是保存的时候提示必须填写 可以随便写个https://www.baidu.com 做个占位符)
- 小程序在手机端使用应该需要发布
- 接着选择钉钉相关的服务端API做获取手机信息使用这里我选择的是 获取用户详情API
try { DingTalkClient client = new DefaultDingTalkClient("<https://oapi.dingtalk.com/user/get>"); OapiUserGetRequest req = new OapiUserGetRequest(); req.setUserid("1231312"); req.setHttpMethod("GET"); OapiUserGetResponse rsp = client.execute(req, "262610d797583fe0ba83e2f246a4d51f"); System.out.println(rsp.getBody()); } catch (ApiException e) { e.printStackTrace(); }
-
这面解释一下选择这个API的原因首先因为会议室项目的前端修改有点麻烦(嘿嘿 也修改成功了~),这面选择直接修改后台,将后台获取到的信息,覆盖原有返回内容。
那么为了方便选择了两个参数access_token和userId 都不怎么变的接口来使用,方便调用。 - 到此为止钉钉相关的信息修改,差不多就结束了(除了发布完FC更新上面的两个首页地址)
- 下面操作FC 这面我提供一个方法(可以有多种方法,自己可以再想想,大概逻辑相同)通过修改接口/room/list_room 这个接口来方便的返回信息。
- 需要修改文件MeetingController.java
@RequestMapping("/list_room") @ResponseBody public ServiceResult listRoom(String session) { //这前4行如果是通过浏览器测试的话建议注释调,因为是校验登陆权限的,浏览器除了 // 老师教的通告钉钉的OA系统进入 有权限 其他直接打开是无权限的 ServiceResult result = checkSession(false); if (!result.isSuccess()) { return result; } List<MeetingRoom> reRooms = new ArrayList<>(); MeetingRoom room = new MeetingRoom(); UserService user = new UserService(); room.setName("我的手机号为:"+user.getPhone()); room.setAddress("向往街 EFC 2000号"); room.setNum(10); room.setAgentId("向往街 EFC 2000号"); reRooms.add(room); return ServiceResult.success(reRooms); }
- 其中我是把调用方法封装到了UserService.java文件中了,添加一个getPhone方法
public String getPhone() { DingTalkClient client = new DefaultDingTalkClient("<https://oapi.dingtalk.com/user/get>"); OapiUserGetRequest req = new OapiUserGetRequest(); req.setUserid("你自己的userId"); req.setHttpMethod("GET"); OapiUserGetResponse response; try { response = client.execute(req, "你自己的access_token"); } catch (ApiException e) { log.error("Failed to {}", URL_GET_USER_INFO, e); return "12"; } if (!response.isSuccess()) { return "232"; } log.info("get user id: " + JSON.toJSONString(response)); UserDTO user = new UserDTO(); String strJson = response.getBody(); JSONObject userInfo = (JSONObject)JSON.parse( strJson ); return userInfo.getString("mobile"); }
- 到此为止FC大体代码也完成了。
重点来了,如果就是这点坑的话。我也不至于熬夜写这篇文章了。
最大的坑就是,修改完要对每一个文件进行保存,保存后需要commit到master分支,之后push到master分支上,之后再部署才能生效。哎...不说了 上图详细讲一下步骤
说明未保存
说明未提交
点击对号 就可以提交了
按照上面的操作,可以push到分支中。到此代码操作到此结束。
提醒一下,如果代码有下面红色波浪说明有可能是语法错误。举例子
这个是没有引入HashMap的包可以点击快速修复引入。
其他的问题就看 云效 FLow给你的日志了。