最近工作中,接触到微信开发(公众号服务号开发)。

由于第一次接触微信开发,所以第一步先去看微信开发文档。

微信公众平台开发文档

接下来,我们要使用微信来进行授权登录。

微信授权的话,获取用户信息有两种:

1.静默获取用户信息、

2.弹出授权界面,用户确认之后获取用户信息(这种方法能够获取到更多信息)。

开发准备,登录微信公众平台后台->基本配置->公众号开发信息:

1.获取到AppID

2.AppSecret

3.设置IP白名单

4.添加网页授权域名

公众号设置->功能设置

这一步,小伙伴本地开发的话没有域名,可以使用内网穿透软件,这里我用的是NATAPP,这样我们就能得到一个域名了,

然后按照微信的流程来绑定授权域名就好了。

获取用户信息,需要openid,然而获取openid的话要通过这个接口先获得一个code

https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect

这里我们用的是弹出授权页面snsapi_userinfo

后台授权接口代码

    @RequestMapping("/")public void login(HttpServletResponse response) {//这里是回调的urlString redirect_uri = URLEncoder.encode("http://回调页面的路径", "UTF-8");String url = "https://open.weixin.qq.com/connect/oauth2/authorize?" +"appid=APPID" +"&redirect_uri=REDIRECT_URI""&response_type=code" +"&scope=SCOPE" +"&state=123#wechat_redirect";response.sendRedirect(url.replace("APPID","你的APPID").replace("REDIRECT_URL",redirect_url).replace("SCOPE","snsapi_userinfo"));}

使用微信web开发工具访问该接口,会弹出授权确认界面

用户点击确认登录之后跳转到我们的回调接口,并携带上code参数redirect_uri/?code=CODE&state=STATE,那我们就通过code来获取openid了。

获取code后,请求以下链接获取access_token与openid:  https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

后台回调接口代码

    @RequestMapping("/index")public void index(String code) {String url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code";//开始请求url地址,第一次请求通过code获取openid与access_token     UrlConnUtils.get(url.replace("APPID", "你的APPID").replace("SECRET", "你的SECRET").replace("CODE", code), new GetDataUrlConnListener() {                @Overridepublic void onSuccess(HttpURLConnection connection) throws IOException {String data = MyUtils.inputStreamToString(connection.getInputStream());JSONObject jsonObject = JSONObject.parseObject(data);if (jsonObject.getString("openid") != null) {//拉取用户信息String openid = jsonObject.getString("openid");String access_token = jsonObject.getString("access_token");String url = "https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN";//第二次请求,用openid与access_token获取用户的信息UrlConnUtils.get(url.replace("OPENID", openid).replace("ACCESS_TOKEN", access_token), new GetDataUrlConnListener() {@Overridepublic void onSuccess(HttpURLConnection connection) throws IOException {String data = MyUtils.inputStreamToString(connection.getInputStream());                                   System.out.println(data);//输出微信返回的用户信息}}});}

第一次返回的数据:

{"access_token":"9_zB3*****************w","expires_in":7200,"refresh_token":"9_Uze***************9WTQ","openid":"o*************ug","scope":"snsapi_userinfo"
}

第二次返回的数据:(用户的信息)

{
"openid":"o***********g",
"nickname":"Smile",
"sex":1,
"language":"zh_CN",
"city":"厦门",
"province":"福建",
"country":"中国",
"headimgurl":"http:\/\/thirdwx.qlogo.cn\/mmopen\/vi_32\/Q0j4TwGTfTLs8SZLLWjyib0Q\/132",
"privilege":[]
}

这样就大功告成了!

(一)java微信授权登录相关推荐

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

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

  2. Java版本微信授权登录(升级版)

    前面写了一遍文章<Java版本微信授权登录(测试版)>,可以当做入门的基础文章,这里继续做一点深入,主要解决的是,如何在本地开发中微信授权以后跳转到本地启动的项目中. 我们知道了微信公众平 ...

  3. java如何实现微信授权登录

    要在 Java 中实现微信授权登录,需要按照以下步骤操作: 在微信开放平台(https://open.weixin.qq.com/)申请微信登录的第三方平台资格,并获取相应的 AppID 和 AppS ...

  4. 微信授权登录(java实现)

    微信公众平台开发文档 微信授权登录获取用户信息有2种方式: 1.静默授权获取用户信息. 2.非静默授权弹出授权界面,用户确认之后获取用户信息(这种方法能够获取到更多信息). 开发前准备: 1.获取到A ...

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

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

  6. 微信授权登录(微信订阅号使用测试账号)

    1.微信授权登录: 微信公众号测试登录: 准备: 1.1 花生壳! 下载地址:http://hsk.oray.com/download/ 1.2 微信公众号:https://mp.weixin.qq. ...

  7. SpringBoot2.0(九):实现微信授权登录并且获取用户信息

    第一步:配置域名 由于我是本地测试,需要一个域名映射工具,改工具使用非常简单,如果自己有域名可以使用自己的域名(自己的域名必须备案)如果没有可以在第一个输入框里面输入自己的域名前缀!微信授权登录端口必 ...

  8. android友盟微信授权登录清除,【转载】Android友盟SDK微信授权登录接入

    微信授权登录接入需要先到微信开放平台申请好应用的APPID,交纳300大洋费用得到授权登录权限后才能使用,此处不再赘述. 接入的两种方式 -- 微信SDK接入:使用微信官方SDK接入,需要分" ...

  9. springboot微信授权登录

    水平有限!实现方法直接找的网上的以为大神所编写的api来实现,这里主要是记录一下自己实现的过程.具体方法请参考网址:https://github.com/liyiorg/weixin-popular, ...

最新文章

  1. R语言plotly可视化:plotly可视化分组归一化直方图(historgram)并在直方图中添加密度曲线kde、并在直方图的底部部边缘使用geom_rug函数添加边缘轴须图
  2. R语言White’s检验实战:检验回归模型中是否存在异方差性(heteroscedasticity)、发生了异常差(heteroscedasticity)问题如何解决
  3. C语言 下标运算符和指针运算符
  4. cbow word2vec 损失_word2vec是如何得到词向量的?
  5. POST提交JSON字符串实战项目(JAVA网络网络爬虫)
  6. 线程轮循打印ABC...
  7. 8 个最好的 jQuery 树形 Tree 插件
  8. idea 常用配置和快捷键
  9. 实例化讲解 RunLoop
  10. 【Spring】---【AOP】
  11. 第三季-第14课-有名管道通讯编程
  12. 非常好用的自助建站程序整站源码 内置几十种站
  13. uniapp在移动端软键盘监听(弹出,收起),及影响定位布局的问题
  14. 无线网络dns服务器设置,netgear 无线dns设置教程
  15. IDEA导入已有项目
  16. linux下的蓝牙驱动程序详解
  17. DongDong认亲戚(字符串之间的并查集应用)
  18. 美团校招题 小团的默契游戏
  19. 定理在数学中的简写形式_数学公式定理中的特殊符号含义及读法
  20. python txt文件常用读写操作

热门文章

  1. 【知识图谱论文】视觉语境对知识图谱真的有帮助吗?表征学习视角
  2. Java ASP Post
  3. 设计与实现Web前端开发的基础
  4. Unity3D - Shader - 凹凸映射(Bump mapping)之美
  5. 五种大数据框架你必须要知道
  6. C4D能在Linux运行吗,运行C4D需要怎样的电脑配置
  7. 浙江科技学院计算机试卷,浙江科技学院计算机专业统计学原理复习题参考答案.doc...
  8. Leetcode 组合总和 与 排列组合相关问题
  9. 大白话 六问数据中台!你想知道的都在这了!
  10. VS无法打开源文件,三种方案比较全,用第三种方案最终解决了。