阿里云钉钉实战第五课

作业要求通过阿里云的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给你的日志了。

上一篇:阿里云钉钉实战第四课


下一篇:与众不同 windows phone (29) - Communication(通信)之与 OData 服务通信