微信授权登录(微信订阅号使用测试账号)
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>
中间遇到的问题:
- 接口回调地址设置错误,这个地址需要是公网中能够访问到的地址,因此需要用花生壳来进行内网映射;
- 因为没有微信公众服务号,因此,找了半天,突然想起有个测试账号,哈哈~~。
参考自:慕课网教程:http://www.imooc.com/learn/713
转载于:https://www.cnblogs.com/nelucifer/p/7535691.html
微信授权登录(微信订阅号使用测试账号)相关推荐
- 微信授权登录-微信公众号和PC端网站
一.微信公众号授权登录--微信公众平台 微信授权登录,并调用后台接口,获取用户信息 1.网页授权回调域名 首先要在公众平台官网中的"开发 - 接口权限 - 网页服务 - 网页帐号 - 网页授 ...
- 小程序 - 微信授权登录 微信授权绑定手机号
用户在使用小程序时,经常需要授权登录,授权登录的作用是获取用户的基本信息,如头像.昵称以及openid等,openid可用于微信授权手机号.微信支付. 微信授权登录 .xhtml如下,wxLogin为 ...
- angularjs 微信授权登录 微信支付
最近做一个项目,用angular 一个单页应用,打算打包成 跨平台移动App 以及在微信里面使用.给大家一个案例 首先,熟悉一下微信授权部分的源代码,如下所示: javascript 前端代码: va ...
- 微信小程序 微信授权登录 微信登录
一.调用接口获取临时登录凭证(code) wx.login({success(res) {if (res.code) {// res.code => 登录凭证} else {console.lo ...
- IOS实现微信授权登录
IOS实现微信授权登录 微信是一个在开发中经常会使用到的平台,比如微信登录.授权.支付.分享.今天我们来看看如何在自己的应用里面集成微信授权. 1.微信授权的定义 微信OAuth2.0授权登录让微信用 ...
- 微信授权登录mock(在没有真实微信账号的情况下测试大量微信账户授权登录的情况)...
场景介绍 对于构建在微信公众号的系统,帐号体系往往使用微信授权登录(如各类微信商城应用系统). 这样操作不仅可以实现静默注册,对用户几乎是无感的,同时也达到了区分用户,获取用户基本信息(头像,昵称等) ...
- 硅谷课堂 12_公众号消息和微信授权登录
硅谷课堂第十二天-公众号消息和微信授权登录 文章目录 硅谷课堂第十二天-公众号消息和微信授权登录 一.公众号普通消息 1.实现目标 2.消息接入 2.1.公众号服务器配置 2.2.验证来自微信服务器消 ...
- uniapp - 超详细的 H5 公众号网页微信登录示例代码,提供从 0-1 公众号配置及详细注释代码(站在新手小白的角度)第三方微信授权登录的实现!!
介绍 目前示例是 "点击按钮登录",你也可以改为 "一进页面就登录" ,可随意改造. 百度的教程都太乱了,而且功能都有一定问题.本文主要讲解 uniapp H5 ...
- 浏览器打开微信公众号h5页面,增加cookie绕过微信授权登录
from selenium import webdriver from time import sleepdriver = webdriver.Chrome() #插入cookie需要与cookie相 ...
最新文章
- [UML]UML系列——类图class的关联关系(聚合、组合)
- fsck.ext3: Unable to resolve 'LABEL=/design'
- 从央视到谷歌:聊一聊竞价广告的机制设计
- 从会议、医患沟通和客服对话三大场景看对话文本摘要技术
- 康托展开与八数码问题
- TensorFlow调试常见问题(pycharm)
- 2019-03-10-算法-进化(只出现一次的数字)
- 云+X案例展 | 民生类:贝斯平云助力500强跨国企数字化转型
- android webview简单使用,android WebView 简单使用Demo
- mysql max_pac_如何解决 MySQL max
- Android SqlLite数据库的创建、增、删、改、查、使用事务
- python爬取地图地址_python爬取了高德地图一些地点的数据,爬出来数据大致情况如下:...
- Spring boot 2.x 错误处理机制 与 定制错误页面
- html表格之个人简历
- CPC客户端编写新申请时报错异常来自 HRESULT:0x80040154 (REGDB_E_CLASSNOTREG))
- 阅读圣经丨聚合与迭代
- 控制装置与仪表随堂练习答案及知识点总结01
- bracktrack5r3安装+bt5r3下安装vmwaretools
- 基于php的物流系统设计与实现
- 使用C++编写卷积神经网络(一)
热门文章
- 云帮平台的设计架构详解
- Pod进程内存缓存分析
- 【GAMES101】作业3 Pipeline and Shading
- deepin linux live cd,Deepin Live cd修复引导
- 教您如何查看Win7详细系统版本号
- 还未挥洒热血,却道了离别(内涵高质量毕业答辩PPT模板)
- win7批量修改计算机名,文件批量改名助手
- oracle与用友的差别,用友U9 PK SAP/Oracle:敢比就是赢
- vscode配置远程连接失败:过程试图写入的管道不存在(已解决)
- 计算机科学领域外文期刊影响因子排行,2020最新SCI影响因子出炉,中国期刊Top100榜单公布,附最全EXCEL完整版目录!...