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

1.2 微信公众号:https://mp.weixin.qq.com/ 服务号申请起来太麻烦,我之前申请了一个订阅号,正好用来做测试

这个是测试账号的appid和appsecret

使用前提,设置【网页授权获取用户基本信息】中的【授权回调页面域名:】

所需的jar包:

开始步骤及准备:
1.AuthUtil.java

package com.wanglixia;import net.sf.json.JSONObject;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;import java.io.IOException;/*** 功能描述:* <p>* Created by Mr.wang on 2017/9/17 11:57.*/
public class AuthUtil {public static final String APPID = "这块填appid";public static final String APPSECRET = "这块是appsecret";public static JSONObject doGetJson(String url) throws IOException {JSONObject jsonObject = null;DefaultHttpClient client = new DefaultHttpClient();HttpGet httpGet = new HttpGet(url);HttpResponse httpResponse = client.execute(httpGet);HttpEntity entity = httpResponse.getEntity();if (entity != null) {String result = EntityUtils.toString(entity, "UTF-8");jsonObject = JSONObject.fromObject(result);}httpGet.releaseConnection();return jsonObject;}
}

2.CallBackServlet.java

package com.wanglixia;import net.sf.json.JSONObject;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;/*** 功能描述:* <p>* Created by Mr.wang on 2017/9/17 13:06.*/
@WebServlet("/callBack")
public class CallBackServlet extends HttpServlet {protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String code = req.getParameter("code");String url = "https://api.weixin.qq.com/sns/oauth2/access_token?" +"appid=" + AuthUtil.APPID +"&secret=" + AuthUtil.APPSECRET +"&code=" + code +"&grant_type=authorization_code";JSONObject jsonObject = AuthUtil.doGetJson(url);System.out.println(jsonObject.toString());String openid = jsonObject.getString("openid");String token = jsonObject.getString("access_token");
//        String expires_in = jsonObject.getString("expires_in");
//        String refresh_token = jsonObject.getString("refresh_token");
//        String scope = jsonObject.getString("scope");String infoUrl = "https://api.weixin.qq.com/sns/userinfo?" +"access_token=" + token +"&openid=" + openid +"&lang=zh_CN";JSONObject userInfo = AuthUtil.doGetJson(infoUrl);System.out.println(userInfo);//1、使用微信用户信息直接登录,无需注册和绑定
//        req.setAttribute("info", userInfo);
//        req.getRequestDispatcher("/index1.jsp").forward(req, resp);}
}

3.WxLogin.java

package com.wanglixia;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URLEncoder;/*** 功能描述:* <p>* Created by Mr.wang on 2017/9/17 11:17.*/
@WebServlet("/wxLogin")
public class WxLogin extends HttpServlet {protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String backUrl = "http://这儿是你的回调地址,上图填的那个/callBack";String url = "https://open.weixin.qq.com/connect/oauth2/authorize?" +"appid=" + AuthUtil.APPID +"&redirect_uri=" + URLEncoder.encode(backUrl) +"&response_type=code" +"&scope=snsapi_userinfo" +"&state=STATE#wechat_redirect";resp.sendRedirect(url);}
}

4.index.jsp

<%--Created by IntelliJ IDEA.User: Mr.wangDate: 2017/9/17Time: 11:02To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><meta name="viewport" content="width=device-width,initial-scale=1.0"><title>$Title$</title>
</head>
<body style="font-size: 40px;text-align: center;">
<a href="/wxLogin">微信公众授权登录</a>
</body>
</html>

5.index1.jsp

<%--Created by IntelliJ IDEA.User: Mr.wangDate: 2017/9/17Time: 11:02To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><meta name="viewport" content="width=device-width,initial-scale=1.0"><title>$Title$</title>
</head>
<body>
<div>登录成功!</div>
<div>${info}</div>
<div><img style="width: 100px;height: 100px;" src="${info.headimgurl}"></div>
</body>
</html>

中间遇到的问题:

  1. 接口回调地址设置错误,这个地址需要是公网中能够访问到的地址,因此需要用花生壳来进行内网映射;
  2. 因为没有微信公众服务号,因此,找了半天,突然想起有个测试账号,哈哈~~。
    参考自:慕课网教程:http://www.imooc.com/learn/713

转载于:https://www.cnblogs.com/nelucifer/p/7535691.html

微信授权登录(微信订阅号使用测试账号)相关推荐

  1. 微信授权登录-微信公众号和PC端网站

    一.微信公众号授权登录--微信公众平台 微信授权登录,并调用后台接口,获取用户信息 1.网页授权回调域名 首先要在公众平台官网中的"开发 - 接口权限 - 网页服务 - 网页帐号 - 网页授 ...

  2. 小程序 - 微信授权登录 微信授权绑定手机号

    用户在使用小程序时,经常需要授权登录,授权登录的作用是获取用户的基本信息,如头像.昵称以及openid等,openid可用于微信授权手机号.微信支付. 微信授权登录 .xhtml如下,wxLogin为 ...

  3. angularjs 微信授权登录 微信支付

    最近做一个项目,用angular 一个单页应用,打算打包成 跨平台移动App 以及在微信里面使用.给大家一个案例 首先,熟悉一下微信授权部分的源代码,如下所示: javascript 前端代码: va ...

  4. 微信小程序 微信授权登录 微信登录

    一.调用接口获取临时登录凭证(code) wx.login({success(res) {if (res.code) {// res.code => 登录凭证} else {console.lo ...

  5. IOS实现微信授权登录

    IOS实现微信授权登录 微信是一个在开发中经常会使用到的平台,比如微信登录.授权.支付.分享.今天我们来看看如何在自己的应用里面集成微信授权. 1.微信授权的定义 微信OAuth2.0授权登录让微信用 ...

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

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

  7. 硅谷课堂 12_公众号消息和微信授权登录

    硅谷课堂第十二天-公众号消息和微信授权登录 文章目录 硅谷课堂第十二天-公众号消息和微信授权登录 一.公众号普通消息 1.实现目标 2.消息接入 2.1.公众号服务器配置 2.2.验证来自微信服务器消 ...

  8. uniapp - 超详细的 H5 公众号网页微信登录示例代码,提供从 0-1 公众号配置及详细注释代码(站在新手小白的角度)第三方微信授权登录的实现!!

    介绍 目前示例是 "点击按钮登录",你也可以改为 "一进页面就登录" ,可随意改造. 百度的教程都太乱了,而且功能都有一定问题.本文主要讲解 uniapp H5 ...

  9. 浏览器打开微信公众号h5页面,增加cookie绕过微信授权登录

    from selenium import webdriver from time import sleepdriver = webdriver.Chrome() #插入cookie需要与cookie相 ...

最新文章

  1. [UML]UML系列——类图class的关联关系(聚合、组合)
  2. fsck.ext3: Unable to resolve 'LABEL=/design'
  3. 从央视到谷歌:聊一聊竞价广告的机制设计
  4. 从会议、医患沟通和客服对话三大场景看对话文本摘要技术
  5. 康托展开与八数码问题
  6. TensorFlow调试常见问题(pycharm)
  7. 2019-03-10-算法-进化(只出现一次的数字)
  8. 云+X案例展 | 民生类:贝斯平云助力500强跨国企数字化转型
  9. android webview简单使用,android WebView 简单使用Demo
  10. mysql max_pac_如何解决 MySQL max
  11. Android SqlLite数据库的创建、增、删、改、查、使用事务
  12. python爬取地图地址_python爬取了高德地图一些地点的数据,爬出来数据大致情况如下:...
  13. Spring boot 2.x 错误处理机制 与 定制错误页面
  14. html表格之个人简历
  15. CPC客户端编写新申请时报错异常来自 HRESULT:0x80040154 (REGDB_E_CLASSNOTREG))
  16. 阅读圣经丨聚合与迭代
  17. 控制装置与仪表随堂练习答案及知识点总结01
  18. bracktrack5r3安装+bt5r3下安装vmwaretools
  19. 基于php的物流系统设计与实现
  20. 使用C++编写卷积神经网络(一)

热门文章

  1. 云帮平台的设计架构详解
  2. Pod进程内存缓存分析
  3. 【GAMES101】作业3 Pipeline and Shading
  4. deepin linux live cd,Deepin Live cd修复引导
  5. 教您如何查看Win7详细系统版本号
  6. 还未挥洒热血,却道了离别(内涵高质量毕业答辩PPT模板)
  7. win7批量修改计算机名,文件批量改名助手
  8. oracle与用友的差别,用友U9 PK SAP/Oracle:敢比就是赢
  9. vscode配置远程连接失败:过程试图写入的管道不存在(已解决)
  10. 计算机科学领域外文期刊影响因子排行,2020最新SCI影响因子出炉,中国期刊Top100榜单公布,附最全EXCEL完整版目录!...