微信JS-SDK开发 入门指南
目录
前言
自己要做一个微信分享,一般来说,接第三方平台就可以了。但是现在的需求是可以更改在分享的时候, 需要修改分享的时候显示的标题和图片。这个时候就涉及到需要调微信提供的接口了。在做的过程中,觉得这个过程比较繁琐,因此记录下来,供人参考。
在看本文之前请务必已经将微信公众平台中的微信网页开发下的微信JS-SDK说明文档第一部分浏览一次。这样,更容易明白我在说什么。
本文仅针对微信网页开发, 简单的说明一下整个过程:
- 前端将当前页面的url传递给后端,当然也可以是后端直接获取前端的url。
- 后台根据前端页面的url和相关的算法,生成一个签名(
signature), 并将生成签名的其他数据传递给前端,具体查看微信公众平台。 - 当前端接受到后端传回的数据后,就可以通过
config接口注入权限验证配置了,一旦成功后, 微信端会弹出:errMsg: {config is ok}。 - 调用微信的各种接口。
提供一个微信分享第三方平台, 请搜索如何接入。
各种后台生成signature的方法,微信公众平台已经提供了几种语言的,如果你使用的是不同的语言,可以根据提供的方法进行相应的修改。
提示: 报错可以查看微信公众平台上的解决方案。
1. 过程
1.1 代码
前端使用SDK的步骤:
componentDidMount() {
const that = this;
const url = encodeComponentURI(location.href);
// 向后台发送请求
// url作为参数传递到后台去
// () => {}, 当后台返回数据后,调用回调函数
this.props.actions.getSignaturePack(url, (obj) => {
const { signPackage } = obj;
const { appId, timestamp, nonceStr, signature } = signPackage;
// 参考微信公众平台: https://mp.weixin.qq.com/wiki
// JSSDK使用步骤
// 第一步: 填写JS接口安全域名,请查看 2.1申请测试帐号
// 第二步: 引入JS文件
// 第三步: 通过config接口注入权限验证配置
wx.config({
debug: true, // 调试模式, 请设置为true
appId,
timestamp,
nonceStr,
signature,
jsApiList: ['onMenuShareTimeline', 'onMenuShareAppMessage'],
});
// 第四步: 通过ready接口处理成功验证
wx.ready(() => {
// 第五步: 判断客户端是否支持要使用的接口
wx.checkJsApi({
jsApiList: ['onMenuShareTimeline', 'onMenuShareAppMessage'],
success: () => {
},
});
// 第六步: 接口调用, 如分享给朋友
const { displayLink, title, abstract } = this.props.state.detail;
wx.onMenuShareAppMessage({
title,
desc: abstract,
link: location.href,
imgUrl: displayLink,
type: '',
dataUrl: '',
success: () => {},
cancel: () => {},
});
});
});
}
1.2 代理
当你的代码都完成的差不多的时候,你需要开始扫描微信二维码进行测试,你却发现扫出来的结果是网络错误或者是其他错误。这是由于你在本地起的服务,而你用的第三方的平台生成的二维码,你的URL当然是localhost:8000之类的,所以你肯定是扫不出来东西的。
因此你需要一个这样的工具,在你起的本地服务,可以映射到公网上去。当然,你也可以自己搭建一个公网服务器,然后将你的项目放到服务器上,但是如果这么做,你的测试就麻烦很多了。你每次的修改代码都要上传到服务器上去,当然,你也可以直接在服务器上进行操作。说了这么多,其实就是想推荐一个叫ngrok的代理工具给你,十分方便。它可以将你本地起的一个服务映射到公网上去。
1.2.1 下载
点击ngrok官网, 根据你的系统下载相应的版本。由于我是Centos7, 因此就只是介绍Centos7。
1.2.2 解压
unzip ngrok
1.2.3 运行
ngrok的运行十分简单,首先将你本地的服务起起来,然后一条命令搞定, 将端口号为8001的服务映射到公网上去。
./ngrok http 8001
1.2.4 查看
打开浏览器,输入控制台里ngrok为你分配的二级域名,你就可以看到你的项目在公网上运行了。因为它是免费的,所以它有2个缺点:
- 慢,其实慢不慢是看个人的,我个人是认为慢。
- 二级域名是随机的,所以我一般这个控制台打开后就不会再关闭的。
上面的两个缺点,其实都是可以解决的,就是付费。
2. 微信接口测试
当你的项目可以在公网上跑了,你就可以进行接口测试了,但是在测试之前,你还需要进行下面几步。
2.1 申请测试帐号
在你申请测试帐号之前,假如你已经有公众号了,如果没有,请去微信公众平台申请一个。
- 打开微信公众平台,登录。
- 看左侧侧边栏,最下面,点击开发者工具。
- 进入公共平台测试帐号。
- 这个时候一共显示了三个模块,分别是测试号信息、接口配置信息,Js接口安全域名。
下面分别介绍下这三个模块。
2.1.1 测试号信息
这里展示了appId和appSecret, 它是你后台用来生成签名所需要的。如果你要测试,需要将你之前写的appId和appSecret改为测试帐号生成的appId和appSecret。
2.1.2 接口配置信息
URL请填写ngrok映射的地址。关于token的话,它是你在调用微信有的接口的时候需要填写的,由于我所调用的分享接口是用不到token的,因此我就不详细解释了。
值得注意的是,token是可以任意填的,但是你要保证满足它的规则以及它与你网站设置的token保持一致。记得,当你在这里填写token的时候,你的项目里已经设置好了token,否则将会提示配置失败。
提示: 这里的token和你之前要获取的jsapi_ticket所需要的access_token是不一样的东西。
2.1.3 Js安全接口域名
这里填写你所映射的ngrok的地址,有两点需要注意,第一个就是ngrok映射的是二级域名,所以你直接填写你的二级域名就可以了。第二个就是一定记得不要加协议(http://), 直接输入xxxxxxxx.ngrok.io就可以了。
参考
微信JS-SDK开发 入门指南的更多相关文章
- 实战微信JS SDK开发:贺卡制作与播放(1)
前段时间忙于CanTK 2.0的开发,所以博客一直没有更新.CanTK 2.0主要增强了游戏和富媒体的开发,现在编码和测试基本完成了,等文档完成了再正式发布,里面有不少激动人心的功能,等发布时再一一细 ...
- 实战微信JS SDK开发:贺卡制作与播放(2)
最近同事用CanTK开发了一个基于微信的贺卡制作APP,我虽然没有参与开发,但是提供CanTK和GameBuilder的技术支持,觉得有些东西比较有意思,写几篇博客和大家分享吧.这个贺卡APP完全开源 ...
- 5+ App开发入门指南
HTML5 Plus应用概述 HTML5 Plus移动App,简称5+App,是一种基于HTML.JS.CSS编写的运行于手机端的App,这种App可以通过扩展的JS API任意调用手机的原生能力,实 ...
- HTML5 Plus移动App(5+App)开发入门指南
HTML5 Plus移动App,简称5+App,是一种基于HTML.JS.CSS编写的运行于手机端的App,这种App可以通过扩展的JS API任意调用手机的原生能力,实现与原生App同样强大的功能和 ...
- DCloud-HTML5+:5+ App开发入门指南
ylbtech-DCloud-HTML5+:5+ App开发入门指南 1.返回顶部 1. 5+ App开发入门指南 App App入门 HTML5 Plus应用概述 HTML5 Plus移动App,简 ...
- 微信小程序开发入门教程
做任何程序开发要首先找到其官方文档,微信小程序目前还在邀请内测阶段,目前官方放出了部分开发文档,经过笔者一天的查看和尝试,感觉文档并不全面,但是通过这些文档已经能够看出其大概面貌了.闲话不多说,我们先 ...
- Office 365 机器人(Bot)开发入门指南 (新篇)
最近在整理书稿时,发现我在2017年7月份写的这篇 Office 365 机器人(Bot)开发入门 的内容,因为相关平台的升级,已经完全不能体现当前的开发过程,所以我再专门写一篇新的开发入门指南给有兴 ...
- mxGraph进阶(一)mxGraph教程-开发入门指南
mxGraph教程-开发入门指南 概述 mxGraph是一个JS绘图组件适用于需要在网页中设计/编辑Workflow/BPM流程图.图表.网络图和普通图形的Web应用程序.mxgraph下载包中包括用 ...
- 所有人都可以是开发人员——《Office 365开发入门指南》视频教程即将上市
今天是春节假期的最后一天,在这里给全国的朋友们拜个晚年,祝大家身体健康,晚年幸福啊.这个春节大家过的怎么样啊,我自己是在老家过的年,家乡的年味还是比较浓的,也再次感谢朋友圈的大家给我看了各地的风光 ...
- .Net Core ORM选择之路,哪个才适合你 通用查询类封装之Mongodb篇 Snowflake(雪花算法)的JavaScript实现 【开发记录】如何在B/S项目中使用中国天气的实时天气功能 【开发记录】微信小游戏开发入门——俄罗斯方块
.Net Core ORM选择之路,哪个才适合你 因为老板的一句话公司项目需要迁移到.Net Core ,但是以前同事用的ORM不支持.Net Core 开发过程也遇到了各种坑,插入条数多了也特别 ...
随机推荐
- Unity C# 多态 委托 事件 匿名委托 Lambda表达式 观察者模式 .NET 框架中的委托和事件
一.多态 里氏替换原则: 任何能用基类的地方,可以用子类代替,反过来不行.子类能够在基类的基础上增加新的行为.面向对象设计的基本原则之一. 开放封闭原则: 对扩展开放,意味着有新的需求或变化时,可以对 ...
- 读书笔记 effective c++ Item 54 让你自己熟悉包括TR1在内的标准库
1. C++0x的历史渊源 C++标准——也就是定义语言的文档和程序库——在1998被批准.在2003年,一个小的“修复bug”版本被发布.然而标准委员会仍然在继续他们的工作,一个“2.0版本”的C+ ...
- C语言学习第七章
今天开始学习指针,指针在C语言中具有很重要的地位,按照老师所说,学C学不好指针跟没学一样,可见指针在C语言中的重要地位.废话不多说,首先我们先要知道什么是指针. 指针:指针是一个变量,它存储另一个对象 ...
- java接收数据接口
1.数据接收接口: 这个可以考虑最简单的Servlet方法,而且效率较高: import java.io.PrintWriter;import java.text.SimpleDateFormat;i ...
- mui开发app之html5+,5+Runtime,5+sdk,native.js
说说几个名词 html5:目前最新的html规范,w3c联盟制定,手机端主要由webkit实现规范,对用户来说就是浏览器实现了它 html5+:所谓"+",扩充了html5原本没有 ...
- JavaScript中undefined 和not defined
首先呢,我们来介绍undefined,xx is not defined的区别 (创建一个html文件,在头部编写JavaScript代码) 我们先编写如下代码: <script type=&q ...
- 云计算之路-阿里云上:负载均衡错误修改Cookie造成用户无法登录
最近陆续有用户反馈在我们网站上登录时遇到登录死循环问题.输入用户名与密码提交后,显示登录成功,但跳转到目标网址后(由于依然处于未登录状态)又跳转回登录页面,再次登录,再次这样...就这样一直循环,怎么 ...
- Django models Fild详解
本文参考自:django官方文档models/field 在model中添加字段的格式一般为: field_name = field_type(**field_options) 一 field o ...
- TPshop分销功能的使用与表设计
首先来段科普,摘自百度百科: 在西方经济学中,分销 的含义是建立销售渠道的意思,根据著名的营销大师菲利普·科特勒的定义,分销渠道(Distribution Channel)又或者叫营销渠道(Marke ...
- Python装饰器实现几类验证功能做法
最近新需求来了,要给系统增加几个资源权限.尽量减少代码的改动和程序的复杂程度.所以还是使用装饰器比较科学 之前用了一些登录验证的现成装饰器模块.然后仿写一些用户管理部分的权限装饰器.比如下面这种 de ...