/**
* 使用微信登陆。JAVA版
*
* @return
* @throws IOException
*/
public String wxLogin() throws IOException, QQConnectException {
getResponse().setContentType("text/html;charset=utf-8");
// 请求被拦截的路径
// String bUri = getRequest().getHeader("referer");
String aUri = CommonUtil.getRequestURL(getRequest());
getRequest().getSession().setAttribute("bUri", aUri);
String requestUrl = ConfigUtil.OAUTH2_URL.replace("APPID", ConfigUtil.APPID).replace("REDIRECT_URI",
CommonUtil.urlEncodeUTF8(ConfigUtil.REDIRECT_URI)).replace("STATE", PayCommonUtil.buildRandom(3) + aUri);
logger.error("微信 wxLogin.bUri =====================================================================" + aUri);
logger.error("微信 wxLogin.requestUrl =====================================================================" + requestUrl);
getResponse().sendRedirect(requestUrl);
return null;
}
/**
* 通过code获取token
*
* @param order
* @throws IOException
*/
public String payapireturnurl() throws IOException {
// HttpServletRequest request = (HttpServletRequest)
// ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST);
// HttpServletResponse response = (HttpServletResponse)
// ActionContext.getContext().get(ServletActionContext.HTTP_RESPONSE);
String wxcode = code;// 微信code
String wxstate = state;// 微信state
logger.error("微信 payapireturnurl.wxcode ============" + wxcode);
logger.error("微信 payapireturnurl.wxstate ============" + wxstate);
token = CommonUtil.getOAUTH2(ConfigUtil.APPID, ConfigUtil.APP_SECRECT, code, getRequest());
try {
String accessToken = null, openID = null, nickname = null;
long tokenExpireIn = 0L;
if (token==null||token.getAccessToken().equals("")) {
// 我们的网站被CSRF攻击了或者用户取消了授权
// 做一些数据统计工作
logger.error("没有获取到响应参数");
} else {
accessToken = token.getAccessToken();
tokenExpireIn = token.getExpiresIn();
// 利用获取到的accessToken 去获取当前用的openid -------- start
openID = token.getOpenId();
logger.error("欢迎你,代号为 " + openID + " 的用户!");
// 查询本地数据库,如果没有此用户则创建一个
Account acc = new Account();
acc.setOpenId(openID);
acc = accountService.selectOne(acc);
logger.error("查询微信用户。acc===========" + acc);
if (acc == null) {
logger.error("查询不到此微信用户。准备创建一个。");
acc = new Account();
acc.setOpenId(openID);
acc.setAccessToken(accessToken);
acc.setLoginType(LoginTypeEnum.wx);// 设置为微信登陆
acc.setAccountType(acc.getLoginType().toString());
logger.error("AccountType ===============." + acc.getLoginType().toString());
acc.setAccountType(acc.getLoginType().toString());
accountService.insertOutAccount(acc);
logger.error("创建成功。");
logger.error("注册完毕.");
acc.setLoginType("wx");// 设置为微信登陆
acc.setNickname(nickname);
logger.error("登陆完毕.");
}
String bUri = (String) getRequest().getSession().getAttribute("bUri");
if (bUri == null || bUri.equals("")) {
bUri = state.substring(3);
}
logger.error("微信 payapireturnurl.bUri ============" + bUri);
if (bUri != null && bUri != "") {
getResponse().sendRedirect(bUri);
}
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
// return "payapireturnurl";
}
相关推荐
微信公众平台 网页授权获取用户基本信息 //获取从wxProcess.aspx传递过来的跳转地址reurl if (Request.QueryString["reurl"] != null && Request.QueryString["reurl"] != "") { reurl = Request.QueryString["re...
java处理小程序授权和app微信授权,以及解析小程序传的encryptedData参数和移动端获取用户信息的处理,压缩包里面包含controller类,解析工具类,配置文件,亲测有效。
在微信小程序登录过程中获取微信用户信息时,需要进行多个有关联的异步请求操作,获取用户加密信息,然后对其解密并返回。传统的异步回调嵌套方法造成程序可读性差,程序执行性能低下。而Promise的出现,解决了微信小程序...
在做项目集成微信登录以及微信支付的时候,都需要进行用户授权。这个授权的流程可以简单描述为: 1. 用户从我们的应用触发需要授权的操作,比如点击微信登录; 2. 应用收到这种用户请求后,将用户重定向到微信提供的...
微信小程序登录 微信回调处理 微信退款处理 1、需要在pom中加入build中所列出的包 2、具体使用查看dao下的Test示例 修改: 1、新增加可使用自定义的accessToken调用方法 @version 1.6 1、增加了JSONUtils取值工具...
微信公众平台 网页授权获取用户基本信息 //获取从wxProcess.aspx传递过来的跳转地址reurl if (Request.QueryString["reurl"] != null && Request.QueryString["reurl"] != "") { reurl = Request.QueryString["re...
适合初学者的.net微信开发案例,主要实现功能为:处理微信公众平台用户推送的信息、回复信息、设置自定义菜单等.
在微信小程序开发时,当我们调用API wx.getUserInfo(OBJECT) 时,需要用户授权。但如果用户拒绝授权,我们如何兼容用户拒绝授权状态,拥有更好的用户体验呢? 先看看这个接口的官方文档: wx.getUserInfo(OBJECT) ...
基于STM32、树莓派和...它负责处理用户请求、管理家居设备、实现用户身份认证和授权、处理数据存储和传输等功能。 微信小程序作为用户控制端: 微信小程序作为用户的控制端,提供了友好的用户界面和便捷的操作体验。
用于调用微信api获取授权用户信息的demo,用于微信网页需要授权的场景,本demo只是演示获取用户信息流程,具体使用要根据自己项目来实现,可以基于此编写一个node中间件来处理授权。其中index.js为使用ES6的async,...
同时,后端还对API密钥做了验证,确保只有授权用户才可以使用该API接口。 总体来说,该GPT微信小程序是一个非常有用的智能问答工具,可以帮助用户快速解答问题并提供相应的解决方案。它的前后端源码都非常清晰易懂...
此sdk包含【开放平台全网发布】,接收微信推送消息事件,发起公众号授权,处理各消息事件,粉丝,分组,支付,emoji处理,网页授权,获取用户信息,群发,图文,回复内容,上传下载多媒体文件,自定义菜单,...
在微信小程序开发时,当我们调用API wx.getUserInfo(OBJECT) 时,需要用户授权。但如果用户拒绝授权,我们如何兼容用户拒绝授权状态,拥有更好的用户体验呢? 先看看这个接口的官方文档: wx.getUserInfo(OBJECT) ...
OAth2.0之微信登录授权 协议介绍 当你开始使用一个网站还是手机应用的时候, 那么第一步很有可能是从注册开始的, 从最初一丝不苟的填写一串表单注册,到使用短信验证码注册, 体验越来越好, 不过这个时候也会带来几个...
所以,微信官方推荐了一个方法,就是在用户第一次拒绝授权的时候,再给用户一个选择的机会.这样能很好的解决上诉问题.下面以用户需要授权两个权限为例,方法如下: 在 APP.JS 先设置两个全局变量 .用作记录用户是否授权 ...
最近公司做了一些有关微信小程序的项目,涉及到授权获取用户基本信息,但是在拒绝授权之后就不会再出现授权窗口; 看网上也有很多人遇到了同样的问题,所以记录下来我的处理方法,供大家和自己学习和记录: 当...
5.3.2 处理识别消息 61 5.4 客服接口 61 5.4.1 客服接口实现 62 5.4.2 消息接口与客服接口相结合 70 5.4.3 客服接口的意义 71 5.5 OAuth2.0网页授权 72 5.5.1 OAuth2.0 72 5.5.2 授权过程 72 5.5.3 详细...
用户身份验证与管理:用户可以通过微信小程序登录系统,使用微信提供的授权机制进行身份验证。Spring Boot框架提供了强大的安全性支持,可以保障用户数据的安全性和隐私。 健康数据采集与存储:用户可以通过微信小...
用户注册与登录:用户可以通过微信授权登录,无需额外注册账号,方便快捷。 自习室预约:用户可以查看自习室的空闲座位情况,选择合适的时间段进行预约,支持提前预约和取消预约。 在线支付:用户可以通过微信支付...