近期有一个M站微信登录需求,了解了下微信网页授权登录功能:

参考文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842

1、创建j2ee项目:weixinAuth

2、增加引入jar文件。

注意:jar包的版本不一样,可能会出现不同错误。commons-lang-2.6.jar、commons-collections-3.2.jar、httpcore-4.4.jar这三

个jar开始我使用的版本不一样,出现了各种异常。

3、环境配置:由于只有订阅号,采用“开发者工具-公众号平台测试账号”进行测试。

参考:https://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo&t=sandbox/index

修改设置自己的域名。注意:这里不需要填写http://。格式:www.baidu.com

4、下面进行代码开发了

4.1新建工具类:AuthUtil.java

代码如下:

public class AuthUtil {
Log logger = LogFactory.getLog(AuthUtil.class);
public static String APPID = "";
public static String APPSECRET = "";
public static String SCOPE = "snsapi_userinfo";
public static JSONObject doGetJson(String url) throws ClientProtocolException, IOException{
JSONObject jsonObject = null;
DefaultHttpClient client = new DefaultHttpClient();
HttpGet httpGet= new HttpGet(url);
HttpResponse response  = client.execute(httpGet);
HttpEntity entity = response.getEntity();
if(null != entity){
String result = EntityUtils.toString(entity,"UTF-8");
jsonObject = JSONObject.fromObject(result);
}
httpGet.releaseConnection();
return jsonObject;
}
}

4.2 增加index.jsp入口页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta content="viewport" content="width=device-width,initial-scale=1.0">
<title>Insert title here</title>
</head>
<body style="font-size: 40px;text-align: center;">
<a href="/weixinAuth/wxLogin">微信公众号授权登录</a>
</body>
</html>

4.3 增加登录servlet。LoginServlet.java

@WebServlet("/wxLogin")
public class LoginServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req,HttpServletResponse resp) throws ServletException, IOException{
String backUrl = "http://域名/weixinAuth/callback";
// 第一步:用户同意授权,获取code
String url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid="+AuthUtil.APPID+""
+ "&redirect_uri="+URLEncoder.encode(backUrl)
+ "&response_type=code"
+ "&scope="+AuthUtil.SCOPE
+ "&state=STATE#wechat_redirect";
resp.sendRedirect(url);
}
}

4.4 增加回调servlet。CallBackServlet.java

@WebServlet("/callback")
public class CallBackServlet extends HttpServlet {
Log logger = LogFactory.getLog(CallBackServlet.class);
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// 第二步:通过code换取网页授权access_token
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);
String openid = jsonObject.getString("openid");
String token = jsonObject.getString("access_token");
// 第三步:刷新access_token(如果需要)
// TODO 
// 第四步:拉取用户信息(需scope为 snsapi_userinfo)
String infoUrl = "https://api.weixin.qq.com/sns/userinfo?access_token="+token
+ "&openid="+openid
+ "&lang=zh_CN";
JSONObject userInfo = AuthUtil.doGetJson(infoUrl);
// unionid 只有在用户将公众号绑定到微信开放平台帐号后,才会出现该字段。
url = "http://域名/weixinAuth/success.jsp";
resp.sendRedirect(url);
}
}

到这里基本上就完成了微信授权网页登录了。至于自己的其他业务扩展,根据需要自己编写吧。

具体源代码参考:http://download.csdn.net/download/mingxiuping1988/10163460

手机端网页-微信授权登录相关推荐

  1. VUE 实现公众号网页微信授权登录

    这里不做过多的解释,具体了解见官网文档. 网页授权官方文档 需要准备工作: 1.微信开发者工具 2.公众号添加开发者权限以及本地IP白名单 3.公众号唯一标识:appID 4.公众号配置网页授权域名 ...

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

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

  3. springboot微信授权登录

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

  4. 从前后端交互逻辑出发、基于企业开发标准,Web微信授权登录系统开发项目分享

    背景 首先,在网页中开发第三方登录系统的案例越来越多,用户的操作习惯也逐渐被引导改变,更加简洁有效的登录交互系统将会成为网页开发中必要的一环.从项目的用户使用背景.微信公众号的开发模式.企业代码的标准 ...

  5. 前端实现微信授权登录

    PC网页微信授权登录 一:网页外链跳转的方式 01.请求后台的接口,会返回一个微信扫码的界面地址,使用js跳转过去即可 wxlogin () {User.wxlogins().then(res =&g ...

  6. 如何使用edge浏览器或chrome谷歌浏览器调试手机端网页(微信网页、浏览器皆可)

    如何使用edge浏览器或chrome谷歌浏览器调试手机端网页(微信网页.浏览器皆可) 1.打开开发者选项中的USB调试功能(狂点"关于手机"中的版本号,然后返回到系统设置中就能看到 ...

  7. uni-app授权第三方登录(微信授权登录)

    APP微信授权登录需要到微信开放平台申请,在HBuilderX配置APP SDK中微信登录的appId,另外需要跟小程序.公众号授权账号互通的话也需要在微信开放平台申请,这是需要付费的呦(300元) ...

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

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

  9. code换取微信openid_微信授权登录开发的两种方式

    本文主要针对微信公众号(公众平台的开发) 首先理解一个概念:OAuth: OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表), ...

  10. 五行代码搞定微信授权登录

    Authing 通过 SDK 为开发者提供了一种快速在微信网页中获取用户信息并完成登录的方法.如果用户在微信客户端中访问第三方网页.公众号可以通过微信网页授权机制,来获取用户基本信息,进而实现业务逻辑 ...

最新文章

  1. 恒生电子linux笔试题,恒生电子一面
  2. hadoop3.2.0集群搭建的一些坑!
  3. 她把肥皂放在矿泉水瓶盖上,第二天大吃一惊...…
  4. pandas 数据分析常用技巧
  5. 【COCOS2DX隐藏IOS7状态栏】通过添加PLIST KEY隐藏IOS7状态栏
  6. Laravel核心解读--路由(Route)
  7. 17计算机接收调剂学校,2017年计算机科学与技术学院接收非全日制硕士研究生调剂.PDF...
  8. Windows 网络无法ping通的解决方法
  9. opencv 基本绘图功能 画直线 画圆 给图像添加文字等
  10. 编写高质量javascript代码的基本要点
  11. 五子棋等级考试软件的开发(三)
  12. AVC与HEVC的差异-帧内预测
  13. 动画云渲染【渲染101】渲染小提示
  14. 别被你的双眼所欺骗 100张神奇的视觉欺骗图
  15. android 点滴
  16. js 获取指定某一天的时间戳
  17. qt中glMultiTexCoord2fARB报错
  18. 基于Sen2Cor软件的Sentinel-2大气校正
  19. 深度学习,分割后处理之通过连通成分分析去除假阳性区域,提高分割准确度
  20. 自定义柱状图(水滴图)的填坑之路

热门文章

  1. 网络云存储技术Windows server 2012 (项目十七 配置iSCSI传输的安全性)
  2. 流程控制 case分支
  3. 急速微信开通过滤方法
  4. MySQL索引原理以及查询优化
  5. html怎么设置火狐ie兼容模式,火狐浏览器兼容模式如何设置?火狐浏览器兼容模式设置方法分享...
  6. python中file是什么意思_Python中的file和open用法详解
  7. 【TCP/IP】IP地址分类和特殊IP地址
  8. 澳洲墨尔本大学的计算机专业,澳洲排名第一的墨尔本大学计算机专业又有变化了!...
  9. 关于Altium Designer的BOM,元件清单
  10. 编译原理实验,赋值语句的语法分析程序设计