授权流程微信官方文档:https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html

  • 第一步:用户同意授权,获取code
    private String buildOpenidOauthUrl(HttpServletRequest request) {URIBuilder builder = new URIBuilder();builder.setScheme("https");builder.setHost("open.weixin.qq.com");builder.setPath("/connect/oauth2/authorize");builder.addParameter("appid", appid);builder.addParameter("redirect_uri", redirect_uri);builder.addParameter("response_type", "code");builder.addParameter("scope", "snsapi_base");builder.setFragment("wechat_redirect");return builder.toString();}

返回值

code=051VQa2003MY3N1Psd000AOoB40VQa2q
  • 第二步:通过code换取网页授权access_token

普通授权拿access_token

     URIBuilder builder = new URIBuilder("https://api.weixin.qq.com/sns/oauth2/access_token");builder.addParameter("appid", appid);builder.addParameter("secret", appsecret);builder.addParameter("code", code);builder.addParameter("grant_type", "authorization_code");URI uri = builder.build();String response = HttpUtils.executeGet(uri);JSONObject json = JSONObject.fromObject(response);
{"access_token": "52_jytUtnLeJjb9dJTL4-ouZrVTy26JJH7D4M_a0hoW31soCpsNle4U-TMr31htTvYdI8n3kjawj7ZSLzWHDreOXlA--Ef4wonlB0ZP2_2ShX0","expires_in": 7200,"refresh_token": "52_FAWNbInfvEXahJUdBEOvjWR4wtJxcavGL3iPV5PTP7kuxYkp9bCNqupSN8-xqf1RHc7i3HaOUyzNDuNxkywAudnrqd0g6jKrAC5MXZQ_aiU","openid": "o8xJfwhcnpNw9NFZEQCm8bDASYfk","scope": "snsapi_base"
}

第三方授权拿access_token

          URIBuilder builder = new URIBuilder("https://api.weixin.qq.com/sns/oauth2/component/access_token");// 公众号主体的appidbuilder.addParameter("appid", appid());builder.addParameter("code", code);builder.addParameter("grant_type", "authorization_code");// 第三方服务商的appidbuilder.addParameter("component_appid", componentAppid());// 第三方服务商的access_tokenbuilder.addParameter("component_access_token", getComponentAccessToken());URI uri = builder.build();String response = HttpUtils.executeGet(uri);JSONObject json = JSONObject.fromObject(response);
{    "access_token":"52_lotJFoTNzCmx-j-5TUHon9OA85-p8d-I-KFpc_XiEZaYShRYxgOejklAEiTSLN7i-o5Hz49miZT4THEyy7NQjqQHAf2uQiXMPsJIufXvDvU","expires_in":7200,"refresh_token":"52_u177qG1Ta6lH4sCWCK8VnhBA-gZjWy3N-CnDgOh5Jt14OCmre234EHDy2MGZwbqSeEDSLytFg52yrUSsC0tAoi8NgcKKF7mKpPQHLE93IVs","openid":"oi1TOjktPmUjemTWA8yH82E_avdk","scope":"snsapi_userinfo","unionid":"ol4Oyt4PC9M9olN9dBkkMEgXa-0Y"
}
  • 第三步:刷新access_token(如果需要)
  • 第四步:拉取用户信息(需scope为 snsapi_userinfo)
    获取用户信息没有关注字段
    public void testGetUserInfo1() throws URISyntaxException {URIBuilder uriBuilder = new URIBuilder("https://api.weixin.qq.com/sns/userinfo");// 网页授权的access_tokenuriBuilder.addParameter("access_token", "52_LFNI09-KHF4lCLM9ymz0RI3nzvmxdpohDlWN8sS3G49hmMGsQA0-bBCsmg7OYoERZnIC8zD7mMWHIkMjFwOIuBrgkDXU-dso7wQMVEs4WSc\",\"expires_in\":7200,\"refresh_token\":\"52_kEYr_GTRzTNbj0q8L0ia_RzyCqzGxmGA369aCqbhZYuq3WrXL9Q3Gz0Sdc2t52A8UP9cv_raWVcbsO_BXgFtAKvfMDq0e9uFVlLSfF7q22c");uriBuilder.addParameter("openid", "oi1TOjktPmUjemTWA8yH82E_avdk");uriBuilder.addParameter("lang", "zh_CN");String jsonStr = HttpUtils.executeGet(uriBuilder.build());JSONObject json = JSONObject.fromObject(jsonStr);System.out.println(json);}
{"openid":"oi1TOjktPmUjemTWA8yH82E_avdk","nickname":"陈","sex":0,"language":"","city":"","province":"","country":"","headimgurl":"https://thirdwx.qlogo.cn/mmopen/vi_32/Q0j4TwGTfTI8WIFBicXvOWcgIKHWfAqrUrhgzxcphu7f6ia8iaNaSEWl2dF5c9BFMKiczHicrqCD99XLFu0MGEKIqfg/132","privilege":[],"unionid":"ol4Oyt4PC9M9olM9dBkkMEgXa-0Y"
}

获取用户是否关注
2021年12月27日之后,不再输出头像、昵称信息。
https://developers.weixin.qq.com/doc/offiaccount/User_Management/Get_users_basic_information_UnionID.html#UinonId

    public void testGetUserInfo2() throws URISyntaxException {URIBuilder uriBuilder = new URIBuilder("https://api.weixin.qq.com/cgi-bin/user/info");// 普通的access_token uriBuilder.addParameter("access_token", "52_8rhMUkAKJB7PuiwRQUnYg7A2pZNtYLCw8rzR4s3MNXJEianjTaiyM9hwG3EGzzC_cGTaLny2zusR1jJpuJY1u5SmA8b0yawJj2Jeh08E0MI");uriBuilder.addParameter("openid", "oi1TOjktPmUjemTWA8yH82E_avdk");uriBuilder.addParameter("lang", "zh_CN");String jsonStr = HttpUtils.executeGet(uriBuilder.build());JSONObject json = JSONObject.fromObject(jsonStr);System.out.println(json);}
{"subscribe": 1,"openid": "oi1TOjktPmUjemTWA8yH82E_avdk","nickname": "","sex": 0,"language": "zh_CN","city": "","province": "","country": "","headimgurl": "","subscribe_time": 1640558194,"unionid": "ol4Oyt4PC9M9olM9dBkkMEgXa-0Y","remark": "","groupid": 0,"tagid_list": [],"subscribe_scene": "ADD_SCENE_SEARCH","qr_scene": 0,"qr_scene_str": ""
}

·
注意:获取用户信息的access_token应该用哪一个

参考:https://www.cnblogs.com/sxmny/articles/4969119.html

微信第三方授权获取用户信息相关推荐

  1. Spring Boot 微信-网页授权获取用户信息

    微信-验证服务器有效性 微信-网页授权获取用户信息 网页授权获取用户信息步骤 第一步:用户同意授权,获取code 第二步:通过code换取网页授权access_token 第三步:拉取用户信息(需sc ...

  2. PHP 微信网页授权获取用户信息

    最近用到过微信用户授权获取用户信息的功能,在这里记录一下. 因为用户授权要用到认证过的服务号才有权限,而线上正在使用公众号,而开发就有些不方便了,这里可以申请一个微信公众测试号. 1.申请一个微信公众 ...

  3. 微信网页授权获取用户信息实战代码

    微信授权的整体思路: 1 第一步:用户同意授权,获取code 2 第二步:通过code换取网页授权access_token 3 第三步:刷新access_token(如果需要) 4 第四步:拉取用户信 ...

  4. 微信用户绑定java实例_OAuth2.0微信网页授权获取用户信息实现全过程(JAVA版本)...

    一.前言 为什么需要OAuth2.0网页授权接口,主要是为了获取微信用户的基本信息(比如用户绑定,用户统计等等) 特别注意:只有认证的服务号有此接口权限 那么订阅号如何实现这个功能呢?可以通过另一个服 ...

  5. laravel-admin微信网页授权获取用户信息过程

    最近在重构我们平台得前端页面以及逻辑,再此记录一下微信网页版授权获取用户资料得过程 第一步,安装 composer require "overtrue/laravel-wechat:~3.0 ...

  6. 连小白都能看懂的微信开发之 微信自定义菜单 + 获取网页授权 + 获取用户信息

    微信自定义菜单+获取网页授权+获取用户信息 今天项目需要一个需求,就是添加一个菜单接口,并且还可以获取用于的信息,从而根据用户的信息去做一些业务的查询.通过百度和自己查看文档大致的解决办法如下: 注意 ...

  7. 微信公众号开发之授权获取用户信息

    微信开发交流群:148540125 系列文章参考地址 极速开发微信公众号 欢迎留言.转发.打赏 项目源码参考地址 点我点我--欢迎Start 前几篇文章已讲完如何导入项目,如何启动配置项目,如何成为开 ...

  8. Java-(二)微信小程序授权获取用户信息和手机号码

    第一篇我们已经知道了微信小程序怎么授权登录获取用户信息. openId 和 unionId .下面将高速告诉大家,微信小程序如何授权获取用户信息和手机号码. 微信官方文档:https://develo ...

  9. vue h5微信公众号授权获取用户信息

    vue h5微信公众号授权获取用户信息 1.申请测试账号 https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login 2.修改网页授权 ...

  10. 微信小程序授权获取用户信息和手机号码

    微信小程序授权获取用户信息和手机号码 1.微信官方文档 登录:https://developers.weixin.qq.com/miniprogram/dev/framework/open-abili ...

最新文章

  1. zookeeper专题:zookeeper的节点类型,数据持久化机制
  2. 深度解读GoogleNet之Inception 系列
  3. spring-mvc文件上传与下载
  4. HDU-----(4858)项目管理(模拟)
  5. 【Python】32 个常用入门 Python 实现
  6. 没有鼠标怎么打开笔记本的触摸板
  7. 【APP源码】呆萌助手工具箱android源码
  8. 当阿里云服务器 ECS 访问不了公网 ip可能存在的原因以及如何解决的办法
  9. Python进程池apply_async的callback函数不执行的解决方案
  10. iOS使用HHealthKit读取修改健康步数
  11. VSCode 同步设置及扩展插件 实现设备上设置统一
  12. python整蛊:无限自动发消息给好G友...已经在挨罚了......
  13. VICTOR维克多(胜利)羽毛球中低端羽拍导购
  14. 一文看懂机器学习流程(客户流失率预测)
  15. 提取HTML中所有图片地址的正则表达式
  16. 演示教学法在计算机基础课程中的应用,浅析项目教学法在《计算机应用基础》课程中的应用...
  17. 搜狐财报图解:年营收8.36亿美元 盈利7900万美元
  18. 上缘星天V1.0——第一款统计命理学软件
  19. 如何查看网页的发布时间
  20. linux shell:字符串分割并反序输出

热门文章

  1. 上海计算机在职专业硕士学校,2020年上海地区专业硕士招生院校大全
  2. 全球院士共话智能工业创新
  3. Codeforces Is your horseshoe on the other hoof?
  4. 微软苏州校招笔试 12月27日
  5. 802.11协议总结
  6. 分享一篇酷炫粒子风暴代码!
  7. matlab 对话框大小调整,matlab界面设计---对话框设计
  8. Google Play 开发者账户被封
  9. 电子束光刻胶(SU-8 GM1010,HSQ,XR-1541-002/004/006,HSQ Fox-15/16,PMMA)
  10. Spring+Spring MVC+MyBatis实现SSM框架整合详细教程【转】