该博客参考于微信开放平台:
https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419317853&token=&lang=zh_CN

第一步,获取code,上述链接中有iOS平台和Android平台获取code的示例,暂不做描述
第二步,通过code获取access_token和openid

private static final String WEIXIN_AUTH_LOGIN_URL = "https://api.weixin.qq.com/sns/oauth2/access_token";  // 授权登录url
private static final String XEIXIN_USERINFO_URL = "https://api.weixin.qq.com/sns/userinfo";                  // 获取微信用户信息url
private static final String WEIXIN_APPID = "xxx";                                                            // 应用唯一标识 在微信开放平台提交应用审核通过后获得
private static final String WEIXIN_SECRET = "xxx";                                                           // 应用密钥AppSecret 在微信开放平台提交应用审核通过后获得
// 获取access_token和openid
StringBuffer sbOauth = new StringBuffer();
sbOauth.append(WEIXIN_AUTH_LOGIN_URL).append("?appid=").append(WEIXIN_APPID).append("&secret=").append(WEIXIN_SECRET).append("&code=").append(code).append("&grant_type=authorization_code");
String strLogin = HttpKit.get(sbOauth.toString());
JSONObject joLogin = null;
try {joLogin = new JSONObject(strLogin);
} catch (JSONException e) {e.printStackTrace();
}
String errcode = joLogin.optString("errcode");
if (StringUtils.isNotEmpty(errcode)) {  // 授权出错return null;
}
String openId = joLogin.optString("openid");
if (StringUtils.isEmpty(openId)) {return null;
}
String accessToken = joLogin.optString("access_token");      // 接口调用凭证
String refreshToken = joLogin.optString("refresh_token");    // 用户刷新access_token
String scope = joLogin.optString("scope");                   // 用户授权的作用域
String expiresIn = joLogin.optString("expires_in");          // access_token接口调用凭证超时时间,单位秒

第三步,通过access_token和openid获取用户信息

// 获取用户信息
StringBuffer sbUser = new StringBuffer();
sbUser.append(XEIXIN_USERINFO_URL).append("?access_token=").append(accessToken).append("&openid=").append(openId);
String strUser = HttpKit.get(sbUser.toString());
JSONObject joUser = null;
try {joUser = new JSONObject(strUser);
} catch (JSONException e) {e.printStackTrace();
}
String nickName = joUser.optString("nickname");          // 用户昵称
String headImgUrl = joUser.optString("headimgurl");      // 用户头像
String unionId = joUser.optString("unionid");            // 用户统一标识
String sex = joUser.optString("sex");                    // 用户性别,1为男性,2为女性

最后,生成token并处理需要的逻辑

String userName = null;
String password = null;
String mail = null;
String phone = null;
String sex = null;
String headImgUrl = wxUser.getHeadimgurl();
String nickName = wxUser.getNickName();
String openId = wxUser.getOpenId();
User user = userService.findInfoByOpenId(wxUser.getOpenId());
if (user == null) {   // 第一次登录时添加用户// 保存头像String fileName = System.currentTimeMillis()+".jpg";String filePath = PropKit.get("uploadImgPath")+"/userHeadImg/";HttpURLConnectionUtil.urlDownload(headImgUrl, filePath, fileName);// 添加用户userService.saveUser(userName, password, mail, phone, sex, fileName, nickName, openId);user = userService.findInfoByOpenId(openId);
}
String newToken = TokenManager.getMe().generateToken(user);
// 处理别的逻辑jsonObject.put("token", newToken);
jsonObject.put("user", user);
jsonObject.put("code", 1);
jsonObject.put("msg", "登录成功");
renderJson(jsonObject.toJSONString());
return;

jfinal 微信授权登录相关推荐

  1. 慕课网_《微信授权登录》学习总结

    时间:2017年08月12日星期六 说明:本文部分内容均来自慕课网.@慕课网:http://www.imooc.com 教学源码:无 学习源码:https://github.com/zccodere/ ...

  2. html5+ mui框架 微信授权登录后跳回app无任何回调事件

    2019独角兽企业重金招聘Python工程师标准>>> 微信授权登录可以调起微信,但是在微信上点击确认登陆后跳回app,但是之后无任何回掉事件. 问题原因: 1 因为我在集成Face ...

  3. thinkphp 微信授权登录 以及微信实现分享

    <?php namespace app\wechat\controller; use think\Controller; use think\Request; /** * 微信授权登录类 * U ...

  4. ios微信登录不上服务器,iOS微信授权登录

    首先需要确保你的App应用在微信开发平台上注册创建并获得对应的接口,对应登录.支付等功能还涉及付费,具体申请流程就不再这里说了.到开放平台->管理中心->移动应用->查看应用,确认你 ...

  5. code换取微信openid_微信授权登录开发的两种方式

    本文主要针对微信公众号(公众平台的开发) 首先理解一个概念:OAuth: OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表), ...

  6. 五行代码搞定微信授权登录

    Authing 通过 SDK 为开发者提供了一种快速在微信网页中获取用户信息并完成登录的方法.如果用户在微信客户端中访问第三方网页.公众号可以通过微信网页授权机制,来获取用户基本信息,进而实现业务逻辑 ...

  7. Java版本微信授权登录(测试版)

    这篇文章是对微信授权登录的一个测试版本,并不能直接在生产上使用,对于在生产上正式使用将会在下一篇中描述. 一,首先需要以下两个数据 appID和appsecret 如何获取这两个数据,请先登录微信公众 ...

  8. 微信授权登录mock(在没有真实微信账号的情况下测试大量微信账户授权登录的情况)...

    场景介绍 对于构建在微信公众号的系统,帐号体系往往使用微信授权登录(如各类微信商城应用系统). 这样操作不仅可以实现静默注册,对用户几乎是无感的,同时也达到了区分用户,获取用户基本信息(头像,昵称等) ...

  9. html5+ mui框架 微信授权登录无响应,不回跳APP

    2019独角兽企业重金招聘Python工程师标准>>> 微信授权登录可以调起微信,但是在微信上点击确认登陆后无响应,不跳回到APP. 问题解决方法: 1. 参考文章做排除:http: ...

最新文章

  1. 内存错误 处理 [CAlayer release]
  2. 演练:有效减法设计,才能开放加法
  3. vmware安装ubuntu的一些成功技巧
  4. tensorflow tf.train.ExponentialMovingAverage() (滑动平均模型)(移动平均法 Moving average,MA)(用于平滑数据波动对预测结果的影响)
  5. mfc从文件中读取数据_Java中Transient关键字,一点课堂(多岸学院)
  6. verilog设计UART发送接收及各种错误仿真
  7. php职业认证,如何用 PHP 进行 HTTP 认证
  8. Cookie投票程序
  9. matlab2015a安装秘钥_MATLAB2015a(2015b)安装教程
  10. QT5 qml的ListView控件使用
  11. 在MATLAB中处理RAW图像
  12. 沧小海基于xilinx srio核的学习笔记之第四章 Xilinx SRIO的示例分析(一)
  13. 机器学习周志华第三章笔记
  14. C语言 isdigit、isalnum、isalpha、islower、issupper用法及其示例
  15. 【微信小程序控制硬件④】 深度剖析微信公众号配网 Airkiss 原理与过程,esp8266如何自定义回调参数给微信,实现绑定设备第一步!(附带源码)
  16. 燃爆朋友圈!中国设计师携手,用海报为武汉加油!
  17. 推荐几个好玩的游戏:
  18. 深度学习优化函数详解-- Nesterov accelerated gradient (NAG)
  19. 常见电子邮件英文缩写
  20. 崂山白花蛇草水 权值线段树套KDtree

热门文章

  1. Mahout源码K均值聚类算分析(2)
  2. AI系列边缘计算盒子
  3. 软考高级系统架构设计师论文系列二:论分布式数据库的设计和实现
  4. 底部选项卡凸出底部栏的解决办法
  5. 星图识别题目及算法实现——数学建模(十六)
  6. Git操作 --忽略文件
  7. IP地址和MAC地址的区分
  8. Java - Lambda 表达式
  9. 计算机操作系统第八章测试题及答案,《计算机基础》第八章练习题
  10. 苹果钱包显示无法连接apple pay