本文用项目框架为spring boot
本文旨在简介微信第三方登陆的主要步骤,
网站微信第三方登陆需要几个条件
1.拥有微信开放平台
如果没有的话需要到https://open.weixin.qq.com/申请
2.进入开放平台,并在网站应用下创建相应的应用

微信官方文档
https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419316505&token=&lang=zh_CN

整个过程有以下步骤
1.生成微信二维码页面扫码登陆,并返回至回掉URL
2.拿到浏览器url的code,通过该code获取access_token和openid
3.通过access_token和openid获取登陆用户信息

1.通过
https://open.weixin.qq.com/connect/qrconnect?appid=appid&redirect_uri=跳转链接&response_type=code&scope=snsapi_login&state=STATE#wechat_redirect
生成页面,扫码登陆后地址栏会附带code参数
2.拿到地址栏的code,通过code获取登陆用户的信息
代码如下:(这里将第二步和第三部结合到了一起)

/*** 获取微信用户信息* @param code* @return*/@GetMapping("/weixin/userInfo")@ResponseBodypublic ResponseEntity<Result> getWeixinUserInfo(@RequestParam(value="code") String code){return ResponseEntity.ok().contentType(MediaType.APPLICATION_JSON_UTF8).body(Result.build().content(weixinService.getUserInfo(code)));}/*** @author Lichenyi* @date 2017-7-5*/
@SuppressWarnings("all")
@Service("IWeixinService")
public class WeixinService implements IWeixinService {private Logger logger = LogManager.getLogger(getClass());@Autowiredprivate RestTemplate restTemplate;@Value("${weixin.open.connect}")private String weixin_open_connect;//网站跳转@Value("${weixin.open.sns.oauth2}")private String weixin_open_sns_oauth2;//获取access token@Value("${weixin.open.sns.userinfo}")private String weixin_open_sns_userinfo;//根据access token 获取用户信息/*** 获取access_token** @param code* @return*/private JSONObject getAccessToken(String code) {String tokenJson = null;String url = String.format(weixin_open_sns_oauth2, code);String resultStr = restTemplate.getForObject(url, String.class);JSONObject result = JSONObject.parseObject(resultStr);if (result.getString("access_token") != null) {return result;}logger.error(String.format("获取accesstoken错误  %s", result.toJSONString()));return result;}/*** 获取用户信息** @param code* @return*/@Overridepublic JSONObject getUserInfo(String code) {try {JSONObject accessToken = getAccessToken(code);if (accessToken.getString("access_token") == null) {return accessToken;}String token = accessToken.getString("access_token");String openid = accessToken.getString("openid");String url = String.format(weixin_open_sns_userinfo, token, openid);String resultStr = restTemplate.getForObject(url, String.class);resultStr = new String(resultStr.getBytes("ISO-8859-1"), "UTF-8");JSONObject result = JSONObject.parseObject(resultStr);if (result.getString("openid") != null) {return result;}logger.error(String.format("获取用户信息错误  %s", result.toJSONString()));return result;}catch (UnsupportedEncodingException e){logger.error(String.format("转码错误  %s", e.getMessage()));e.printStackTrace();}return null;}}application.properties文件
server.port=8888##微信相关接口
weixin.open.appid=
weixin.open.secret=
weixin.open.redirect_uri=http://m.mjiahome.com/index.html
#生成二维码的页面
weixin.open.connect=https://open.weixin.qq.com/connect/qrconnect?appid=${weixin.open.appid}&redirect_uri=${weixin.open.redirect_uri}&response_type=code&scope=snsapi_login&state=STATE#wechat_redirect
weixin.open.sns.oauth2=https://api.weixin.qq.com/sns/oauth2/access_token?appid=${weixin.open.appid}&secret=${weixin.open.secret}&code=%s&grant_type=authorization_code
weixin.open.sns.userinfo=https://api.weixin.qq.com/sns/userinfo?access_token=%s&openid=%s

项目最后返回结果:

{"errorCode": 0,"errorDescription": "success","requestId": "a9026ed2-2986-434c-8762-88deb14cb54d","result": {"country": "CN","unionid": "oV6Xy0rmk13eJp_TCOHKOKcbzGFI","province": "Henan","city": "Luoyang","openid": "oe9Uv01iSHLbUR439JUY-nT3Rpbg","sex": 1,"nickname": "一壶酒","headimgurl": "http://wx.qlogo.cn/mmopen/muJQmcibTZam2heIDTXUseWtwyxiarxFXtACucoib1w5PibiaDun7EJibw6ibfC0z1XxSpmjmickKK0Ms2nwCOezy9WYLp14rH1RhjEib/0","language": "zh_CN","privilege": []}
}

项目地址:https://github.com/lichenyigit/oauth.weixin.git

PC网站微信第三方登陆相关推荐

  1. PC网站QQ第三方登陆

    本文用项目框架为spring boot 本文旨在简介QQ第三方登陆的主要步骤, 网站QQ第三方登陆需要几个条件 1.拥有QQ开放平台 如果没有的话需要到https://connect.qq.com/申 ...

  2. PC网站微信扫码支付,Native支付,“当前商户号暂不支持关联该类型的appid“,“签名错误,请检查后再试““springBoot 微信支付“

    springBoot 微信支付 PC网站微信扫码支付-Native支付 一.采坑大合集 1.当前商户号暂不支持关联该类型的appid 2.签名错误,请检查后再试 二.springboot集成微信支付D ...

  3. QQ,微信第三方登陆

    感觉越是大公司的SDK越不好用,其实我也是一直在想为什么他们拿那么高的工资却干着不相应的事儿. 下面说下QQ和微信第三方登陆的一点坑 首先 (QQ互联)自带的sdk中  一个文件工程没有调用产生关联错 ...

  4. QQ第三方登陆 和 微信第三方登陆

    QQ第三方登陆 QQ互联注册: http://connect.qq.com 回调地址: 可以填写多个,以封号分隔,需要注意的是填写完整url,不止是http://host,例如: http://www ...

  5. pc端用微信扫一扫实现微信第三方登陆

    官方文档链接 第一步:获取AppID  AppSecret (微信开发平台申请PC端微信登陆) 第二步:生成扫描二维码,获取code https://open.weixin.qq.com/connec ...

  6. web pc端 微信授权登陆 实例详解

    首先,看看微信官方文档,了解一下具体实现步骤 微信官方文档: 微信登陆开发指南 基本了解了微信登陆的流程后,然后我们再来一起踩坑 1.先去微信公众平台申请网站,appId,设置域名 2.调用微信地址生 ...

  7. 微信第三方登陆,无需注册一键登录,获取用户信息,PHP实现方法

    今天讲讲利用微信oauth2实现第三方登陆的实现方法. 先说说前提吧! 首先你得是服务号,并且是经过认证的.这样微信会给你很多第三方接口的权限,如果是订阅号或者没有认证的服务号那就不用想了! 一开始你 ...

  8. 【weixin】微信支付---PC网站微信支付

    一.PC网站支付 微信支付支持完成域名ICP备案的网站接入支付功能.PC网站接入支付后,可以通过JSAPI支付或Native支付,自行开发生成二维码,用户使用微信"扫一扫"来完成支 ...

  9. PC网站微信扫码支付之Native支付(模式二)

    简介 Native支付是指商户系统按微信支付协议生成支付二维码,用户再用微信"扫一扫"完成支付的模式.该模式适用于PC网站.实体店单品或订单.媒体广告支付等场景. Native支付 ...

最新文章

  1. 【做题】SRM701 Div1 Hard - FibonacciStringSum——数学和式&矩阵快速幂
  2. Wireshark安装失败或找不到网络接口问题
  3. Webpy 0.3新手指南
  4. shell变量加单引号sql_关于shell:在Bash中的命令中扩展变量的单引号
  5. Python的冷技巧小技巧
  6. 2M线路保护实现与应用
  7. 前端学习(1504):组件通信的几种情况
  8. python绘图矩阵散点图_Python实践:seaborn的散点图矩阵(Pairs Plots)可视化数据
  9. java 注解的使用
  10. 搜索图片及相似度探秘 二
  11. 无连续重复的随机算法
  12. 一步一步理解拖拽Drag(一)
  13. endnote转化成纯文本后_EndNote X7如何去掉域代码生成纯文本文件
  14. Android 使用低功耗蓝牙简单介绍
  15. matlab 电流平均值,电流平均值谐波检测方法MATLAB仿真
  16. 中国联通5G网络架构
  17. 软件测试工作中有哪些常用的工具?
  18. 智慧运维平台之全息监控
  19. C#获取中国免费的天气信息
  20. JS 获取指定日期的前几天或者几天

热门文章

  1. 5G系统——5G-GUTI、5G-TMSI、5G-S-TMSI
  2. linux yum ku,Linux基础知识:Linux yum 配置与使用
  3. PHP获取钉钉审批,PHP获取钉钉考勤信息源代码
  4. 没噪音免更换滤网?贝昂JY200净化器评测
  5. Android 通知栏图标
  6. 六招帮你解决平面设计排版
  7. java中jlaber用法_laber的for属性
  8. Ambari2.7.4配置HIVE_AUX_JARS_PATH
  9. 出入库管理系统-精致版
  10. python语言的实验心得体会范文_关于实验的心得体会范文5篇