由于项目需要,需要接触微信开发,并要调用微信的JS-SDK里面的接口。

因为经验缺乏,我百度一下关于微信开发的资料,但收集的资料都不尽人意。网上的主流的微信开发是采用PHP开发的,而本人学的Java。所以对PHP微信开发只能看懂思路。更有的是,网上一些微信开发视频,也是和PHP有关的,关于用Java开发的甚少。

无奈之下,我只好苦啃微信开发文档。大家都知道,微信官方给的开发文档真的有点那个啥,一个功能实现非要分几个地方来说,看完这块,又得点击另一个页面看完另一块,甚是麻烦。这样的设定也让我走了好多坑。

但功夫不负有心,在研究透了微信开发文档之后,我顺利在在项目中完成微信开发。现在我将微信开发的经验分享一下,希望对大家有所帮助。

微信JS-SDK是微信公众号平台面向网页开发这提供基于微信内的网页开发工具包。接口大类分为:基础接口、分享接口、图像接口、音频接口、智能接口、设备信息、地址位置、摇一摇周边、界面操作、微信扫一扫、微信小店、微信卡劵和微信支付。一般使用频率高的就是分享接口、地理微信、微信扫一扫和微信支付。

接下来,我将主要讲解如何调用微信分享接口。

第一步,准备内网映射工具,ngrok。不清楚这个的同学可以去百度一下。https://ngrok.com为ngrok官网。要进行微信开发,内网映射工具是不可少。毕竟,我们程序员进行开发,要测试开发的产品是否能用,都先在自己的电脑跑一下。但由于ngrok的服务器在外国的,鉴于天朝的墙太高,访问可能不稳定。所以我推荐的是国内的natapp,免费和收费的都有,服务毕竟稳定可靠,只不过要想自定义二级域名就得交费成为VIP咯。

第二步,配置JS接口安全域名。登录要进行开发的公众号,点击公众设置--->功能设置。设置JS接口安全域名,要注意三点:①填写域名前面不需加上http://,例如你的域名是http://test.com,直接填写test.com即可;②域名默认80端口,只支持80和443端口,所以域名后面不能添加端口号。③该域名为你调用微信JS-SDK接口域名。

第三步,引用JS文件。在需要调用JS接口的页面引入http://res.wx.qq.com/open/js/jweixin-1.0.0.js 。

第四步,通过config接口注入权限验证配置 。具体参数有什么用处,在截图都有注释讲解。其中jsApiList为我们要使用的接口,我在下面共引用了五个接口,分别为微信好友分享、QQ好友分享、腾讯微博分享、QQ空间分享和朋友圈分享。调用的都是分享的接口。至于其他接口列表,可以去微信开发文档那浏览一下。这里就不详说。

第五步,在服务器生成相关参数传到调用JS-SDK页面,完成授权。这是最重要的一步。如上图所示,appId,timestamp,nonceStr,signature都为必填参数。下面我将会详细说说如何生成这些参数并传回页面。

①appId为开发的微信公众号的AppID(应用ID),我们可以在登录微信公众号,在开发选项中点击基本配置来查看。

②timestamp为系统生成的时间戳。

③nonceStr为服务器随机生成的字符串。

④signature为微信JS-SDK使用权限算法。在生成signature之前,我们要拿到jsapi_ticket。官方文档是这样解释的:

我们要注意三个地方。jsapi_ticket要缓存两个小时,每过两个小时,向微信那边请求一次。获取jsapi_ticket要通过access_token。那么我们该如何获取access_token呢?

从文档可以看出,access_token需要AppID和AppSercet两个参数。而且access_token和jsapi_ticket一样,有效期皆为两小时。这就要求我们服务器要缓存access_token和jsapi_ticket,当有效期一过,就重新请求。有的人采用是用数据库来存取这两个参数,而我采用的是用Quartz定时器。关于Quartz定时器的使用,可浏览我上篇博客《SSH与Quartz集成》,里面有关于Quartz的使用方法。

AppSercet可在与APPID同一页面获取。接下来,调用接口,获取access_token。

接下来,我们用access_token去获取jsapi_ticket。

获取jsapi_ticket,就可以进行生成签名。在此之前,先看一下官方文档的签名算法。

用代码实现。

第六步,传生成的参数给网页。

第七步,调用已授权的JS接口。

第八步,利用微信Web开发者工具调试,看看是否授权成功。(微信web开发者工具可在微信开发下载)。

微信开发之JSSDK调用相关推荐

  1. 企业微信H5_网页jssdk调用 agentconfig选人选照片等案例演示

    文章目录 一.验证域名归属校验 1. 阅读文档 2. 配置公网域名 3. 登录企业微信管控台 4. 选择自建应用 5. 网页授权及JS-SDK 6. 填写公网域名 7.下载校验文件 8. 校验文件移动 ...

  2. 企业微信H5_网页jssdk调用 判断当前客户端版本是否支持指定JS接口

    接上一篇:企业微信H5_网页jssdk调用,ticket签名config及示例https://gblfy.blog.csdn.net/article/details/123170569 文章目录 一. ...

  3. 企业微信H5_网页jssdk调用,ticket签名config及示例

    文章目录 一.验证域名归属校验 1. 阅读文档 2. 配置公网域名 3. 登录企业微信管控台 4. 选择自建应用 5. 网页授权及JS-SDK 6. 填写公网域名 7.下载校验文件 8. 校验文件移动 ...

  4. 企业微信H5_网页jssdk调用 config和agentconfig的区别

    文章目录 一.文档阅读 1. 企业微信JS-SDK作用 2. config 接口注入权限 3. agentConfig注入应用的权限 二.二者区别 1.引入js不同 2. 参数个数不一样 3. 获取应 ...

  5. php 表单提交2次,微信开发之php表单微信中自动提交两次问题解决办法

    前言: 最近做微信开发,在微信中访问PHP页面,页面中有个表单.测试发现偶尔会出现表单被自动提交两次的情况,导致流程出错. 问题原因 暂时未找到原因,不过怀疑跟微信本身的机制有关. 解决方法 用ses ...

  6. php html wxml,微信开发之WXML、WXSS 和JS的详细介绍

    这篇文章主要介绍了微信小程序 WXML.WXSS 和JS介绍及详解的相关资料,需要的朋友可以参考下 前几天折腾了下.然后列出一些实验结果,供大家参考. 使用开发工具模拟的和真机差异还是比较大的.也建议 ...

  7. 微信公众号 Jssdk调用错误码:63002, 获取access_token错误代码 errcode 40164的解决方法,如何解决,微信公众号的坑。

    今晚在开发公众号,需要调用到 Jssdk,结果配置好了,一运行就提示:Errmsg:"config:fail,Error: 系统错误,错误码:63002,invalid signature ...

  8. android jni 调用java对象_Android NDK开发之Jni调用Java对象

    本地代码中使用Java对象 通过使用合适的JNI函数,你可以创建Java对象,get.set 静态(static)和 实例(instance)的域,调用静态(static)和实例(instance)函 ...

  9. c#webservice接口調用_Windows 桌面应用开发之 C# 调用 WebService 接口

    Web Service 是一个平台独立的,低耦合的,自包含的.基于可编程的 Web 的应用程序,可使用开放的 XML(标准通用标记语言下的一个子集)标准来描述.发布.发现.协调和配置这些应用程序,用于 ...

最新文章

  1. php 解决方案,php优化解决方案
  2. leetcode 164. 最大间距(桶排序)
  3. LINQ TO SQL和Entity Framework 的关系 你了解多少?
  4. Filecoin网络目前总质押量约为3570万枚FIL
  5. Dynamics 365 Customer Engagement中插件的调试
  6. 新建mfc工程后打开图形化设计界面
  7. Python(三)微信公众号开发
  8. day18 - 正则表达式
  9. 获取网站图标icon
  10. ftp主动模式与被动模式
  11. 阿里云系统盘扩容及数据盘分区、格式化分区、挂载、取消挂载
  12. WordPress博客自媒体主题:Autumn自定义主题配色
  13. 如何提升会员收入?从这道面试题谈谈框架思维。
  14. 瑞星发布中国用户最常用十大密码:abc123
  15. 重载和重写的区别是什么
  16. NRF51822裸机TIMER学习笔记
  17. shell练习Day1
  18. 计算机论文参考文献最新年份,参考文献时间格式
  19. Cortex-M处理器指令集详解
  20. 详述光波分复用(WDM)技术

热门文章

  1. 工作遇到华为NE40E板卡ALM红灯报警---原因分析
  2. PTC_Creo.9.0免安装
  3. PipeCAD之管道标准库PipeStd
  4. MATLAB-路径无法保存,每次打开需要重新设置路径问题的解决方案
  5. 《TCP/IP 卷一》笔记、ping和traceroute 的实现思路
  6. 通俗易懂的oracle11g讲解,王二暖DBA学习开发Oracle11G数据库视频教程带课件
  7. 把网站网址放到桌面,创建网址桌面快捷方式
  8. 运行 wallhaven-electron 项目显示的是空白界面,浏览器端显示Uncaught TypeError: window.require is not a function
  9. 系统查不到FC卡驱动的解决办法(这里用qlogic举例)
  10. (转)云存储:阿里云OSS 、又拍云和 七牛 的比较