这几天简单的做了一下微信登陆的demo,希望对大家有帮助

不多说,直接上代码:

/**

*

* @author TY

*

*/

@Controller

@RequestMapping("/wechatlogin")

public class WechatLoginController {

/**

* 请求CODE

*

* @param response

* @throws Exception

*/

@RequestMapping("/login")

public void login(HttpServletResponse response) throws Exception {

String state = "&state=STATE";

String url = Constant.WECHAT_LOGIN_URL + Constant.APPID + Constant.REDIRECT_URI + Constant.RESPONSE_TYPE

+ Constant.SCOPE + state;

response.sendRedirect(url);

return;

}

/**

* 请求CODE后的回调

*

* @param code

* @param state

* @throws Exception

*/

@RequestMapping("/callback")

public void callback(String code, String state, HttpServletResponse response) throws Exception {

if (code == null) {

/** 重定向回登陆界面 */

String url = Constant.MAINURL;

response.sendRedirect(url);

return;

}

/** 这里需要判断state */

/******************* 通过code获取access_token *******************/

code = "&code=" + code;

String url = Constant.WECHAT_GET_TOKEN_BY_CODE + Constant.APPID + Constant.SECRET + code

+ Constant.GET_ACCESSTOKEN_GRANT_TYPE;

String jsonStr = RequestUrl.getUrlResult(url);

if (jsonStr.contains("\"errcode\":40029")) {

System.out.println("code过期");

/*********************** 这里可以处理 ***********************/

} else {

JSONObject jsonObject = JSONObject.fromObject(jsonStr);

String accessToken = (String) jsonObject.get("access_token");

String refreshToken = (String) jsonObject.get("refresh_token");

String openId = (String) jsonObject.get("openid");

/******************* 通过access_token调用接口 *******************/

/** 检查access_token有效性... */

url = Constant.WECHAT_CHECK_ACCESS_TOKEN + "&access_token=" + accessToken + "&openid=" + openId

+ "&lang=zh_CN";

jsonStr = RequestUrl.getUrlResult(url);

if (jsonStr.contains("\"errcode\":40029")) {

/**

* access_token失效...

*

* 刷新access_token有效期

*/

url = Constant.WECHAT_REFRESH_TOKEN + Constant.APPID + Constant.REFRESH_TOKEN_GRANT_TYPE

+ "&refresh_token=" + refreshToken + "&openid=" + openId + "&lang=zh_CN";

jsonStr = RequestUrl.getUrlResult(url);

// 判断是否超时

/*********************** 这里需要处理 ***********************/

}

/** 获取用户信息 */

url = Constant.WECHAT_GET_USERINFO + "&access_token=" + accessToken + "&openid=" + openId + "&lang=zh_CN";

jsonStr = RequestUrl.getUrlResult(url);

/*********************** 这里需要处理 ***********************/

}

return;

}

}

java微信demo_微信登陆 , 简单的demo , java相关推荐

  1. uniCloud 微信小程序登陆全流程demo

    ps: Q群:743496144 博主一向不喜欢废话,直接说几个点,你悟了就直接去试,可以不用看完,还是得自己去试印象才深刻,博主写博文就怕自己以后忘记做个笔记顺便能帮一个是一个 1.你要获取unio ...

  2. java随机yujie_植物大战僵尸简单版教程java版

    作者:叁念 1.闲来无事,做了个简单版的植物大战僵尸,不多说直接看效果图: 2.程序的项目结构如下: 3.先上素材 图片素材 链接:https://pan.baidu.com/s/1dGqqIkx 密 ...

  3. java中有没有计时器_简单说一下java中计时器,实际需要,没有详解

    因为Android程序有升级推送,并且把推送提示的窗口放在了开平图那个页面,而且开平图页面四秒,然后进入主界面,没有升级没事,但是有的话如果点击取消则窗口消失,不点击的话则一直显示,虽然程序没有bug ...

  4. Java里try catch的简单用法

    Java里try catch的简单用法: Java里try catch的简单用法: 1.try+catch 程序的流程是:运行到try块中,如果有异常抛出,则转到catch块去处理.然后执行catch ...

  5. Java前后端分离第三方登录_网站前后端分离情况下如何实现QQ微信等第三方登陆-Fun言...

    前言 最近在弄第三方登录,实现起来很简单,就是调几个接口获取个人信息即可,详细了解:maven项目整合QQauth2.0第三方登录详细说明,然后因为本网站是前后端分离的,所以不能再回调接口那里直接跳转 ...

  6. iOS 类似微信,QQ聊天界面的气泡聊天简单实现Demo

    以下是YYKit组件的源码分析,高级性能优化相关都在里面可以找到 YYwebImage超细源码分析 YYImage超细源码分析 YYModel源码分析YYText源码分析 12.27日更新:分析了一个 ...

  7. java实现PC网站实现微信扫码登陆

    近期,开发一个项目要求PC网站可以进行扫码登陆. 1.前期工作 需要先在微信开放平台进行注册(https://open.weixin.qq.com/),并认证一个网站应用. 点击查看按钮,我们需要记录 ...

  8. java可以微信qq同时登陆_java实现 微博登录、微信登录、qq登录实现代码_java_脚本之家...

    微信,微博,QQ,这是现在目前用的最多的手机 APP,我们做产品哪能不跟他们不沾边,对于登录,我想谁也不想要多少个帐号密码,根本记不住! 为了增加用户体验,用户能够快速的注册登录,第三方账号进行登录注 ...

  9. java微信退款接口demo_微信公众平台开发(6) 微信退款接口

    接口链接:https://api.mch.weixin.qq.com/secapi/pay/refund 当交易发生之后一段时间内,由于买家或者卖家的原因需要退款时,卖家可以通过退款接口将支付款退还给 ...

最新文章

  1. ASP.NET重用代码技术 - 代码绑定技术
  2. 我的Dll(动态链接库)学习笔记
  3. 如何提高Linux下块设备IO的整体性能?
  4. 日本计算机科学家谷歌评审,高一被清华姚班录取, 高三委拒谷歌offer, 一个重度网瘾少年到理论计算机科学家的蜕变...
  5. Linux自动化之Cobbler补鞋匠安装
  6. 使用txt文件导入数据库内容
  7. jQuery学习之---效果
  8. loadrunner中变量转换成一个参数
  9. cocos2d-x关于CCTableView的“乱序问题”的理解
  10. Qt warning : 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
  11. Shell子程序结构,函数
  12. iOS- 添加UIWindow蒙版
  13. Cisco Packet Tracer 8.0 发布,百度网盘下载
  14. 通过js的File对象获取图片的base64字符串
  15. 微服务:同步与异步的抉择。
  16. 关于自己搭建的邮件被微软反垃圾邮件标记为垃圾邮件
  17. 极大似然估计原理详细说明
  18. 超声波气象站和常规气象站的区别
  19. 详解 Web Worker,不再止步于会用
  20. 苹果手机html吊起拍照,苹果手机照相技巧

热门文章

  1. linux实验总结及心得_安全实验室 | 内网渗透—Linux权限维持技巧总结
  2. java判断优先级代码_java运算符的优先级
  3. 算子基本思想_2.2 量子力学基本假设 Part 2
  4. java 解析 csv_在Java中将数据从CSV解析到数组
  5. java消息对话框用什么做_Java如何创建消息对话框?
  6. Struts2基础知识(三)
  7. Frida Android hook
  8. Java并发编程实战~ThreadLocal
  9. Arthas 思维导图笔记
  10. php apc 失效时间,PHP APC无法正常工作