package com.controller;
import com.config.URLConstant;
import com.dingtalk.api.DefaultDingTalkClient;
import com.dingtalk.api.DingTalkClient;
import com.dingtalk.api.request.OapiUserGetRequest;
import com.dingtalk.api.request.OapiUserGetuserinfoRequest;
import com.dingtalk.api.response.OapiUserGetResponse;
import com.dingtalk.api.response.OapiUserGetuserinfoResponse;
import com.taobao.api.ApiException;
import com.util.AccessTokenUtil;
import com.util.ServiceResult;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
import java.util.Map;
/**
* 企业内部内部-小程序Quick-Start示例代码 实现了最简单的免密登录(免登)功能
*/
@RestController
public class IndexController {
private static final Logger bizLogger = LoggerFactory.getLogger(IndexController.class);
/**
* 欢迎页面,通过url访问,判断后端服务是否启动
*/
@RequestMapping(value = "/welcome", method = RequestMethod.GET)
public String welcome() {
return "welcome";
}
/**
* 钉钉用户登录,显示当前登录用户的userId和名称
*
* @param requestAuthCode 免登临时code
*/
@RequestMapping(value = "/login", method = RequestMethod.POST)
@ResponseBody
public ServiceResult login(@RequestParam(value = "authCode") String requestAuthCode) {
//获取accessToken,注意正是代码要有异常流处理
String accessToken = AccessTokenUtil.getToken();
//获取用户信息
DingTalkClient client = new DefaultDingTalkClient(URLConstant.URL_GET_USER_INFO);
OapiUserGetuserinfoRequest request = new OapiUserGetuserinfoRequest();
request.setCode(requestAuthCode);
request.setHttpMethod("GET");
OapiUserGetuserinfoResponse response;
try {
response = client.execute(request, accessToken);
} catch (ApiException e) {
e.printStackTrace();
return null;
}
//3.查询得到当前用户的userId
// 获得到userId之后应用应该处理应用自身的登录会话管理(session),避免后续的业务交互(前端到应用服务端)每次都要重新获取用户身份,提升用户体验
String userId = response.getUserid();
String userName = getUserName(accessToken, userId);
System.out.println(userName);
//返回结果
Map<String, Object> resultMap = new HashMap<>();
resultMap.put("userId", userId);
resultMap.put("userName", userName);
ServiceResult serviceResult = ServiceResult.success(resultMap);
return serviceResult;
}
/**
* 获取用户姓名
*
* @param accessToken
* @param userId
* @return
*/
private String getUserName(String accessToken, String userId) {
try {
DingTalkClient client = new DefaultDingTalkClient(URLConstant.URL_USER_GET);
OapiUserGetRequest request = new OapiUserGetRequest();
request.setUserid(userId);
request.setHttpMethod("GET");
OapiUserGetResponse response = client.execute(request, accessToken);
return response.getName();
} catch (ApiException e) {
e.printStackTrace();
return null;
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
如果您下载了本程序,但是该程序存在问题无法运行,那么您可以选择退款或者寻求我们的帮助(如果找我们帮助的话,是需要追加额外费用的)。另外,您不会使用资源的话(这种情况不支持退款),也可以找我们帮助(需要追加额外费用) 微信小程序是腾讯公司基于微信平台推出的一种轻量级应用形态,它无需用户下载安装即可在微信内直接使用。自2017年正式上线以来,小程序凭借其便捷性、易获取性和出色的用户体验迅速获得市场认可,并成为连接线上线下服务的重要桥梁。 小程序的核心特点包括: 零安装:用户只需通过微信扫一扫或搜索功能,即可打开和使用小程序,大大降低了用户的使用门槛和手机存储空间压力。 速度快:加载速度相较于传统的HTML5网页更快,依托于微信强大的基础设施,能够实现近乎原生应用的流畅体验。 跨平台兼容:开发者一次开发,即可在多种终端设备上运行,免除了复杂的适配工作,大大提高了开发效率。 社交属性强:小程序可以无缝嵌入微信生态,支持分享至聊天窗口、朋友圈等社交场景,有利于用户间的传播和裂变增长。 丰富接口能力:提供丰富的API接口,可调用微信支付、位置服务、用户身份识别等多种功能,方便企业进行商业服务的集成与拓展。 目前,微信小程序已经覆盖了电商购物、生活服务、娱乐休闲、教育学习、工具助手等多个领域,为数以亿计的用户提供便捷的服务入口,也为众多商家和开发者提供了新的商业模式和创业机会。随着技术的不断升级和完善,小程序已成为现代移动互联网生态中不可或缺的一部分。
资源推荐
资源详情
资源评论
收起资源包目录
钉钉企业内部应用-小程序-QuickStart JAVA版.zip (14个子文件)
SJT-code
lib
lippi-oapi-encrpt.jar 12KB
top-api-sdk-dev-ding-open-mc-20180719.091043-1.jar 1.66MB
top-api-sdk-dev-ding-open-mc-20180719.091254-2-sources.jar 1.05MB
pom.xml 3KB
src
test
java
com
ApplicationTests.java 351B
main
resources
application.properties 86B
java
com
Application.java 433B
controller
IndexController.java 3KB
util
AccessTokenUtil.java 1KB
LogFormatter.java 2KB
ServiceResult.java 1KB
config
URLConstant.java 487B
Constant.java 470B
.gitignore 38B
共 14 条
- 1
资源评论
JJJ69
- 粉丝: 5967
- 资源: 5593
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功