微信小程序随笔
微信公众号平台扫码登录功能Android项目打包微信公众号平台扫码登录功能
/blogtech/p/10877492.html
/blog/12
比如csdn直接用微信扫码就可以登录,用户信息直接同步到pc端
1,配置域名
配置了域名之后,微信服务器获取到用户信息之后可以通过域名映射到小程序的服务器接口进行后续的处理
配置步骤:设置 --> 公众号设置 --> 功能设置 --> 网页授权设置 (设置你自己的域名即可)
MP_verify_HAlZDt72bkvxIrb6.txt 这个文件,需要下载下来放到你的根目录Webapp下,之后启动服务器,服务器根据配置的域名 /MP_verify_HAlZDt72bkvxIrb6.txt 访问这个文件,并成功读取到该文件中的内容就意味着配置成功!提示失败,有可能是你的服务器中配置了权限拦截,例如:登录权限
权限拦截
/weixin_42522148/article/details/119311606
企业局域网需要设置共享文件供局域网用户访问,为了保证共享文件的安全也需要设置共享文件的访问权限,防止访问共享文件的用户越权访问
可以在开始菜单里单击管理工具–文件服务器管理,。。
2.配置一下微信服务器访问自己开发的小程序接口的URL Token EncodingAESKey
url是开发者用于接受微信消息和事件的接口url(配置域名之后微信服务器知道了要访问的程序服务器,但是不知道要发送到服务器的哪个url端口)
token可以由开发者填写用于生成签名(配置在微信服务器里与小程序的接口url里的token进行对比之后验证安全建立联系),EncodingAESKey由开发者手动填写或随机生成,将用作消息体加解密密钥。
Token EncodingAESKey 需要配置在你的服务器中 WxMpService 的 Config 中,此时还需要编写微信服务访问你接口的代码,返回微信服务器需要返回的结果才会提交成功
例如:配置的域名为:/mp/login/notify
@Controller@RequestMapping("/mp/login")public class ValidateWeiXin extends HttpServlet {private static final long serialVersionUID = 1L;private String TOKEN = "这里随便填入32位以内的数字英文,也就是token";@RequestMapping("/notify")protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.setContentType("text/plain;charset=utf-8");// 微信加密签名String signature = request.getParameter("signature");// 随机字符串String echostr = request.getParameter("echostr");// 时间戳String timestamp = request.getParameter("timestamp");// 随机数String nonce = request.getParameter("nonce");String[] str = {TOKEN, timestamp, nonce };Arrays.sort(str); // 字典序排序String bigStr = str[0] + str[1] + str[2];// SHA1加密,我这里用的是common-codec的jar包,你们也可以用java自带的消息消息摘要来写,只不过要多写几行代码,但结果都一样的DigestUtils.sha1Hex(bigStr);String digest = DigestUtils.sha1Hex(bigStr);// 确认请求来至微信if (digest.equals(signature)) {response.getWriter().print(echostr);}}}
只有token是使用程序服务器端的,其他的都是来自于请求里,signature是服务器端把三个参数按加密算法生成的,在程序服务端用同样的算法加密之后对比来确定消息具体是不是来自于微信,是的话就把echostr字符串返回,成功建立联系
(response.resetBuffer();可以重置响应的缓存区)
echostr就是EncodingAESKey,用于加密消息体(含有用户登录信息必须加密)
微信服务器向程序服务器发送请求的时候把开发这填写的token和微信服务器随机生成的echostr,以及hash之后生成的signature这三个一起发过去,证明该url请求是由微信服务器发送的,这三个方式都是为了相互补充表明身份,因为自己的token可能会泄露给别人,别人也可能自己随机生成一个echostr,hash之后发送给url
若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。
GET请求携带参数
signature微信加密签名结合了开发者填写的token参数和请求里的timestamp参数,
Android项目打包
可以使用Hbuilder工具
下载hbuilder,在开始界面选择“新建wap2app”