目录

前言

自己要做一个微信分享,一般来说,接第三方平台就可以了。但是现在的需求是可以更改在分享的时候, 需要修改分享的时候显示的标题和图片。这个时候就涉及到需要调微信提供的接口了。在做的过程中,觉得这个过程比较繁琐,因此记录下来,供人参考。

在看本文之前请务必已经将微信公众平台中的微信网页开发下的微信JS-SDK说明文档第一部分浏览一次。这样,更容易明白我在说什么。

本文仅针对微信网页开发, 简单的说明一下整个过程:

  1. 前端将当前页面的url传递给后端,当然也可以是后端直接获取前端的url。
  2. 后台根据前端页面的url和相关的算法,生成一个签名(signature), 并将生成签名的其他数据传递给前端,具体查看微信公众平台
  3. 当前端接受到后端传回的数据后,就可以通过config接口注入权限验证配置了,一旦成功后, 微信端会弹出: errMsg: {config is ok}
  4. 调用微信的各种接口。

提供一个微信分享第三方平台, 请搜索如何接入。

各种后台生成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个缺点:

  1. 慢,其实慢不慢是看个人的,我个人是认为慢。
  2. 二级域名是随机的,所以我一般这个控制台打开后就不会再关闭的。

上面的两个缺点,其实都是可以解决的,就是付费。

2. 微信接口测试

当你的项目可以在公网上跑了,你就可以进行接口测试了,但是在测试之前,你还需要进行下面几步。

2.1 申请测试帐号

在你申请测试帐号之前,假如你已经有公众号了,如果没有,请去微信公众平台申请一个。

  1. 打开微信公众平台,登录。
  2. 看左侧侧边栏,最下面,点击开发者工具。
  3. 进入公共平台测试帐号。
  4. 这个时候一共显示了三个模块,分别是测试号信息、接口配置信息,Js接口安全域名。

下面分别介绍下这三个模块。

2.1.1 测试号信息

这里展示了appIdappSecret, 它是你后台用来生成签名所需要的。如果你要测试,需要将你之前写的appIdappSecret改为测试帐号生成的appIdappSecret

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就可以了。

参考

微信公众平台

Django使用微信分享接口

微信JS-SDK开发 入门指南的更多相关文章

  1. 实战微信JS SDK开发:贺卡制作与播放(1)

    前段时间忙于CanTK 2.0的开发,所以博客一直没有更新.CanTK 2.0主要增强了游戏和富媒体的开发,现在编码和测试基本完成了,等文档完成了再正式发布,里面有不少激动人心的功能,等发布时再一一细 ...

  2. 实战微信JS SDK开发:贺卡制作与播放(2)

    最近同事用CanTK开发了一个基于微信的贺卡制作APP,我虽然没有参与开发,但是提供CanTK和GameBuilder的技术支持,觉得有些东西比较有意思,写几篇博客和大家分享吧.这个贺卡APP完全开源 ...

  3. 5+ App开发入门指南

    HTML5 Plus应用概述 HTML5 Plus移动App,简称5+App,是一种基于HTML.JS.CSS编写的运行于手机端的App,这种App可以通过扩展的JS API任意调用手机的原生能力,实 ...

  4. HTML5 Plus移动App(5+App)开发入门指南

    HTML5 Plus移动App,简称5+App,是一种基于HTML.JS.CSS编写的运行于手机端的App,这种App可以通过扩展的JS API任意调用手机的原生能力,实现与原生App同样强大的功能和 ...

  5. DCloud-HTML5+:5+ App开发入门指南

    ylbtech-DCloud-HTML5+:5+ App开发入门指南 1.返回顶部 1. 5+ App开发入门指南 App App入门 HTML5 Plus应用概述 HTML5 Plus移动App,简 ...

  6. 微信小程序开发入门教程

    做任何程序开发要首先找到其官方文档,微信小程序目前还在邀请内测阶段,目前官方放出了部分开发文档,经过笔者一天的查看和尝试,感觉文档并不全面,但是通过这些文档已经能够看出其大概面貌了.闲话不多说,我们先 ...

  7. Office 365 机器人(Bot)开发入门指南 (新篇)

    最近在整理书稿时,发现我在2017年7月份写的这篇 Office 365 机器人(Bot)开发入门 的内容,因为相关平台的升级,已经完全不能体现当前的开发过程,所以我再专门写一篇新的开发入门指南给有兴 ...

  8. mxGraph进阶(一)mxGraph教程-开发入门指南

    mxGraph教程-开发入门指南 概述 mxGraph是一个JS绘图组件适用于需要在网页中设计/编辑Workflow/BPM流程图.图表.网络图和普通图形的Web应用程序.mxgraph下载包中包括用 ...

  9. 所有人都可以是开发人员——《Office 365开发入门指南》视频教程即将上市

      今天是春节假期的最后一天,在这里给全国的朋友们拜个晚年,祝大家身体健康,晚年幸福啊.这个春节大家过的怎么样啊,我自己是在老家过的年,家乡的年味还是比较浓的,也再次感谢朋友圈的大家给我看了各地的风光 ...

  10. .Net Core ORM选择之路,哪个才适合你 通用查询类封装之Mongodb篇 Snowflake(雪花算法)的JavaScript实现 【开发记录】如何在B/S项目中使用中国天气的实时天气功能 【开发记录】微信小游戏开发入门——俄罗斯方块

    .Net Core ORM选择之路,哪个才适合你   因为老板的一句话公司项目需要迁移到.Net Core ,但是以前同事用的ORM不支持.Net Core 开发过程也遇到了各种坑,插入条数多了也特别 ...

随机推荐

  1. Asp.net core WebApi 使用Swagger生成帮助页

    最近我们团队一直进行.net core的转型,web开发向着前后端分离的技术架构演进,我们后台主要是采用了asp.net core webapi来进行开发,开始每次调试以及与前端人员的沟通上都存在这效 ...

  2. iOS 相册和网络图片的存取

    iOS 相册和网络图片的存取 保存 UIImage 到相册 UIKit UIKit 中一个古老的方法,Objective-C 的形式 void UIImageWriteToSavedPhotosAlb ...

  3. phpmyadmin的初始账号密码是多少

    问这个问题,是不是有点弱智,但是这个问题确实阻塞了我那么几分钟. 实际上问题很简单,初始账号是root,密码为空

  4. hibernate 多对多关系总结

    hibernate中,对对象关系的映射处理估计是最让人迷惑和头疼的,特别是cascade和inverse属性的使用,不知已经杀死了我多少个脑细胞了,好记性永远比不上烂笔头,为了能节省自己的脑细胞,降低 ...

  5. 卷积神经网络CNN总结

    从神经网络到卷积神经网络(CNN)我们知道神经网络的结构是这样的: 那卷积神经网络跟它是什么关系呢?其实卷积神经网络依旧是层级网络,只是层的功能和形式做了变化,可以说是传统神经网络的一个改进.比如下图 ...

  6. mysql for windows(服务器)上的配置安装--实例

    mysql for windows(服务器)上的配置安装 **** 下载 官网网址:https://www.mysql.com/downloads/ 选择左上角Community 再选择MySQL C ...

  7. linux网络设置和虚拟机克隆转移之后Error:No suitable device found:no device found for connection 'System eth0'问题解决

    以root用户登录 #vi  /etc/sysconfig/network-scripts/ifcfg-eth0     #编辑配置文件,添加修改以下内容 BOOTPROTO=static   #启用 ...

  8. PHP的学习记录

    这是我的第一次写博客,是一个PHP的初学者,刚刚开始之前是一点儿的都不懂,现在开始通过买些书籍回来学习,废话少说,开始记录笔记吧. 函数:函数的英文名为function,也就是功能的意思,在自定义函数 ...

  9. 【跑会指南】2017年3-5月IT技术会议大合集

    2016年各类大会让人应接不暇,技术圈儿最不缺的就是各种大会小会,有的纯干货,有的纯广告.作为一名技术开发者,参加了几场大会,你是不是也开始思忖:究竟哪些会议才值得参加?下面活动家为你推荐几场2017 ...

  10. Scrollview中嵌套ListView(自定义组件解决)

    首先,ScrollView中只能放一个控件,一般都放LinearLayout,orientation属性值为vertical.在LinearLayout中放需要呈现的内容.ListView也在其中,L ...