手机wap端开发微信绑定第三方登陆功能

news/2024/12/1 0:36:29/

1.申请一个“微信公众平台服务号”;

2.开发者模式 - 配置服务器(微信公众平台里面的配置)


我们需要配置三个值:服务器地址(接收消息的地址)、自定义token、消息加密方式(可选择明文或者密文),暂时地址只支持80端口,其他端口接收不到消息哦。
在开发者首次提交验证申请时,微信服务器将发送GET请求到填写的URL上,并且带上四个参数signature、timestamp、nonce、echostr(开发者配置的token与timestamp与nonce字典排序后进行sha1加密后的字符串签名、时间戳、随机数、随机字符串),开发者通过对签名(即signature)的效验,来判断此条消息的真实性。此后,每次开发者接收用户消息的时候,微信也都会带上这四个参数访问开发者设置的URL,开发者依然通过对签名的效验判断此条消息的真实性。效验方式与首次提交验证申请一致。
get请求校验请求是否来自微信的方法是:
a. 将token、timestamp、nonce三个参数进行字典排序
b. 将三个参数字符串拼接成一个字符串进行sha1加密
c. 开发者获得加密后的字符串可与signature对比,若相等,原样返回echostr给微信,若不等,此次请求非微信请求,什么也不做。

java后台配置服务器的代码如下:

“`
public class CheckUtil {
// 与接口配置信息中的Token要一致
private static String token = “*******”;
/*验证签名 /
public static boolean checkSignature(String signature, String timestamp, String nonce) {
String[] arr = new String[] { token, timestamp, nonce };
// 将token、timestamp、nonce三个参数进行字典序排序
// Arrays.sort(arr);
sort(arr);
StringBuilder content = new StringBuilder();
for (int i = 0; i < arr.length; i++) {
content.append(arr[i]);
}
String tmpStr = null;
try {
MessageDigest md = MessageDigest.getInstance(“SHA-1”);
// 将三个参数字符串拼接成一个字符串进行sha1加密
byte[] digest = md.digest(content.toString().getBytes());
tmpStr = byteToStr(digest);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
// 将sha1加密后的字符串可与signature对比,标识该请求来源于微信
return tmpStr != null ? tmpStr.equals(signature.toUpperCase()) : false;
}

    /*** 将字节数组转换为十六进制字符串*/private static String byteToStr(byte[] byteArray) {String strDigest = "";for (int i = 0; i < byteArray.length; i++) {strDigest += byteToHexStr(byteArray[i]);}return strDigest;}/*** 将字节转换为十六进制字符串*/private static String byteToHexStr(byte mByte) {char[] Digit = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };char[] tempArr = new char[2];tempArr[0] = Digit[(mByte >>> 4) & 0X0F];tempArr[1] = Digit[mByte & 0X0F];String s = new String(tempArr);return s;}public static void sort(String a[]) {for (int i = 0; i < a.length - 1; i++) {for (int j = i + 1; j < a.length; j++) {if (a[j].compareTo(a[i]) < 0) {String temp = a[i];a[i] = a[j];a[j] = temp;}}}}}

`/**
* 微信公众平台,基本配置 - 服务器配置 调用
*/
@Controller
@RequestMapping(“/wechat”)
public class wechat {
//微信消息接收和token验证
@RequestMapping(value=”/ownerCheck”,method = RequestMethod.GET)
public void ownerCheck(HttpServletRequest request, HttpServletResponse response) throws IOException {
boolean isGet = request.getMethod().toLowerCase().equals(“get”);
PrintWriter print;
if (isGet) {
// 微信加密签名
String signature = request.getParameter(“signature”);
// 时间戳
String timestamp = request.getParameter(“timestamp”);
// 随机数
String nonce = request.getParameter(“nonce”);
// 随机字符串
String echostr = request.getParameter(“echostr”);
// 通过检验signature对请求进行校验,若校验成功则原样返回echostr,表示接入成功,否则接入失败
if (signature != null && CheckUtil.checkSignature(signature, timestamp, nonce)) {
try {
print = response.getWriter();
print.write(echostr);
print.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
3.服务器配置完成之后界面

4.申请一个微信”开放平台”账号;

5.在微信“开放平台”绑定“公众平台服务号”

每个用户针对每个公众号会产生一个安全的OpenID,如果需要在多公众号、移动应用之间做用户共通,则需前往微信开放平台,将这些公众号和应用绑定到一个开放平台账号下,绑定后,一个用户虽然对多个公众号和应用有多个不同的OpenID,但他对所有这些同一开放平台账号下的公众号和应用,只有一个UnionID,可以在用户管理-获取用户基本信息(UnionID机制)文档了解详情
6.设置公众号-网页授权域名
设置网页授权

【注: 如果是自己电脑的内网,可以申请一个花生壳账号,绑定一个域名,内网穿透:

端口必须是80端口】

将文件MP_verify_N8no8dpNO9n7wuBZ.txt(点击下载)上传至填写域名或路径指向的web服务器(或虚拟主机)的目录(若填写域名,将文件放置在域名根目录下,例如wx.qq.com/MP_verify_N8no8dpNO9n7wuBZ.txt;若填写路径,将文件放置在路径目录下,例如wx.qq.com/mp/MP_verify_N8no8dpNO9n7wuBZ.txt),并确保可以访问。

然后我上传到tomcat 下的webapp下.txt文件在项目下的路径:
在h5-web.xml里面配置,配置这句之后,静态资源直接访问

7.以上外部环境配置完成之后
“` 前端页面判定
window.οnlοad=function(){
if(is_weixin()){
// 是微信,跳转微信登陆
(“#weixinLogin”).click(function () {  
                window.location.href=’
{rc.contextPath}/h5/weixin/login/index.html’;
});
}else{
//跳转到微信浏览器
$(“#weixinLogin”).click(function () {
window.location.href=’http://weixin.qq.com/r/ykzexmzEPzFArSil9xnY‘;
});
}
}


http://www.ppmy.cn/news/579158.html

相关文章

PHP实现支付宝手机WAP支付接入说明

因为项目原因&#xff0c;最近刚在项目中接入了支付宝的支付&#xff0c;故将支付过程记录下来以备查看。 项目背景&#xff1a;该项目为手机WAP项目&#xff0c;所以接入的是支付宝的手机网站支付类型。 首先&#xff0c;在支付宝官方下载SDK和DEMO&#xff1a; https://do…

手机wap页面开发小记

最近偶然开发手机wap页面&#xff0c;记点新鲜的东西&#xff0c;嘿嘿。 1. 页面要标记为手机wap页面&#xff0c;可增加百度等工具对wap页面的识别度。 例如&#xff1a;<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapfo…

php(wap)获取手机号码,WAP获取访客手机号码

抓取网站访客手机号 我们先了解一下常规移动网络的连接方式 WIFI&#xff0c;手机wifi上网其实电信、联通、移动的移动运营平台没啥事&#xff0c;因为他走的路由器其实是走的传统的有线上网。所以wifi上网默认走的有线&#xff0c;不扣流量&#xff0c;也无法获得号码了 常规三…

手机wap适配

<meta name"viewport" content"widthdevice-width, initial-scale1.0, minimum-scale0.5, maximum-scale2.0, user-scalableyes" /> wap手机页面自动适应手机屏幕宽度 大 | 中 | 小 2012/08/25 17:51 , mdy Css 重构 , 评论(0) , 阅读(5969) , V…

wap网游php源码,wap 文字游戏

【实例简介】 一款仙侠类文字游戏的php源代码------------------------------------------------------- 【实例截图】 【核心代码】 某wap文字网游源码 ├── web │ ├── class │ │ ├── encode.php │ │ └── player.php │ ├── css │ │ └─…

GitHub 上数百万个存储库可能容易被劫持

GitHub 上数以百万计的企业软件存储库很容易受到重新劫持&#xff0c;这是一种相对简单的软件供应链攻击&#xff0c;威胁行为者将依赖于特定存储库的项目重定向到恶意攻击。 研究人员在本周的一份报告中表示&#xff0c;这个问题与 GitHub 用户或组织更改项目名称或将其所有权…

支付宝手机wap支付对接接口

最近一直在做微信小程序开发&#xff0c;今天突然要开发支付宝手机版支付&#xff0c;突然打开支付宝开发平台&#xff0c;有点懵逼&#xff01;好久不看居然变化了不少&#xff0c;闲话不多说&#xff0c;下面写下对接过程和流程。 1 申请蚂蚁金服支付宝商家服务&#xff0c;…

dede实现手机wap浏览

首先&#xff0c;在模块里安装手机wap浏览&#xff0c;如果本地没有也可以从网上下载&#xff0c;切记要区分编码【gbk,utf8】。下载好直接点安装 就ok了。 然后直接在网址后加/wap.php便可访问手机版本网站&#xff0c;只不过比较丑【ps&#xff1a;相当的丑】 朋友&#xff…