关于微信js的分享到微信分享朋友圈失败的功能,为什么失败也没提示

【How-To】微信官方资料教你用好微信JS-SDK接口
SocialBeta
【How-To】微信官方资料教你用好微信JS-SDK接口
SocialBeta |  11:11
微信近日开放JS-SDK接口,业界可谓是欢欣鼓舞、奔走相告,目测将激起一大波第三方开发商的创新产品!真真是H5开发者的利好!但也有用户表示,还不了解JS-SDK接口到底是啥,究竟怎么用。这里,我们引用微信公开课内容,与大家一同学习微信的JS-SDK接口。
1、分享类接口:支持获取&分享到朋友圈&、&发送给朋友&、&分享到QQ&和&分享到微博&按钮的用户点击状态,同时支持自定义分享内容。 解读:说起分享接口应用,最常见的莫过于公众号文章分享。通过分享按钮,用户可以将自己喜欢的文章分享给微信好友,也可分享到微信朋友圈。 通过此次开放的分享接口,开发者获得了新的能力:可以在用户分享时,为其设置个性化的分享图片、标题、描述等,从而使分享的内容更生动有趣,以获得更好的传播效果。 同时,通过此接口,开发者还可以获知用户是否分享了网页,帮助其更好地评估网页服务是否受用户喜爱等。
2、图像类接口:支持拍照,并从手机相册选择、上传、下载和预览图片。 解读:&云打印&已开通了图像类接口,用户可以自由选择、打印手机相册中已有的照片,或是即时拍摄一张照片。打印前,可通过大图预览确认照片选择是否有误。 这实际上帮助开发者在网页上流畅、低成本地实现了选图或拍照的功能,也为用户带去了更好的使用体验。 大家熟悉的&印美图&,就是通过图像类接口,接收用户上传的照片,从而帮助用户完成打印服务。今后,运营者、商家通过H5页面发起照片征集等活动时,图像类接口也能帮上忙了。
3、音频类接口:支持语音的录制、播放和暂停播放,同时支持将语音快速上传到云端服务器,或从云端服务器将语音快速下载到网页。 &微邮筒&早前已开通了音频类接口,用户在制作明信片时,可以同时录一段语音。当亲朋好友或自己收到明信片时,扫一扫明信片上的二维码,即可收听该段语音。 如此一来,语音就脱离了手机存储的限制,用户在任何时候、通过任何帐号,只要打开微信扫码即可获取语音片段,让记忆更坚固、长久。
4、智能类接口:支持将语音快速地转换成文字。开发者无需掌握语音识别相关技术,只需简单引用微信JS-SDK提供的方法即可实现。 解读:微信的语音输入、语音转文字功能已上线有段时间了,受到用户的广泛好评。 事实上,TA能做的还有更多。比如&付费通账单查缴&就借此为用户提供了&语音缴费&服务。用户不用按键,对着手机说出账单户号,就像平时用微信跟朋友聊天一样,然后点击&确认&即缴费成功,可谓是&躺着都可以完成&。便捷的缴费体验赢得了用户的青睐,该帐号上线仅仅5天,就拥了11539名用户,交易成功1862笔,交易金额达到20万元。 因此,语音识别等智能类接口的开放,对一些开发能力稍弱的运营方来说,无疑是重大利好。
5、设备信息类接口:支持获取当前手机设备的网络状态,如2G、3G、4G或Wi-Fi,为用户提供流畅的浏览体验。 解读:精心设计的界面、互动体验,如果因为用户手机网络原因而无法呈现,出现跳转迟缓、显示不全等状况,不仅白白浪费了运营者的前期努力,也容易挫伤用户参与积极性,留下不佳的印象。如果能够获取用户当前手机设备状态,通过技术手段加以干预,比如根据设备网络状态推送合适的网页版本,那么将大大减少此类状况的发生,用户体验也将更有保障。
6、地理位置类接口:支持获取用户的地理位置信息(前提是获得用户同意),支持使用微信的内置地图查看器,查看地理位置或导航。 解读:&大众点评&已将地理位置功能应用得相当成熟,当用户发起团购美食、电影票、订酒店等需求时,&大众点评&可以立即根据用户实时位置,向用户展示其位置周边相应商家。用户打开相关商品、服务详情页后,还可点击商家地址,调出地图、查询导航指引。
7、界面操作类接口:支持隐藏或显示微信内置浏览器&右上角菜单&、&分享到朋友圈&、&发送给朋友&、&复制链接&等指定按钮,支持关闭当前网页窗口并返回公众号会话。 解读:众所周知,点击微信界面右上角的&&&&&,将打开微信所有的菜单按钮,但对不同类型的商家、活动来说,并非所有菜单按钮都有用,冗余的按钮反而会耽误时间,干扰用户选择。界面操作类接口的开放,能帮助运营者关闭不需要的按钮,优化选择界面,也能提升用户操作效率。
8、微信扫一扫接口:支持使用微信扫一扫,扫描一维码或二维码,并将用户扫码内容交由微信处理或返回给网页由网页处理。 解读:除了扫街景、翻译,微信扫一扫在购物中的应用也已十分广泛,京东、当当等许多网站均支持微信扫码支付结算,用户在逛街时,通过微信扫描商品条形码,亦可即时查询到线上购买价格。 除此之外,微信扫一扫亦可扫实物。微信与Panda.W在广州花城大道开展的&微信扫熊猫&图象识别合作,首创通过实物、3D图形加入微信扫码新功能,用户直接扫描实物,就能进入相应的商品售卖页面,开始购物。从看见到购买、售后无缝对接,大大缩短用户犹豫期,帮助商家有效促进了销售。
9、微信小店接口:支持从网页跳转到指定的微信小店商品页,支持浏览商品的详细信息,支持完整的购买、客服等流程。 解读:花心思做了H5推广页面,用户还得通过扫码、加关注、找入口,才能开始购买商品?太慢了!今后,用户只需轻轻一点,就能直接打开相应微信小店的商品详情页,光速完成详情查询和咨询、购买。
10、微信卡券接口:支持批量添加卡券、调起使用门店卡券列表及获取用户选择列表。 解读:简而言之,通过这个能力,商家能批量添加多种卡券,并直接为用户展示其附近的门店能够使用那些卡券,引导其选择领取。同时,通过对后台&用户选择列表&进行数据分析,能够快速了解相应商圈的用户喜好、整体产品受欢迎程度等,比如XX小区附近用户更爱&牛堡+姜饮&,以便后期的商品调配与优化经营。
11、微信支付接口:支持有支付权限的公众号在网页发起一个微信支付请求。 解读:在某些场景下,相对于图文消息,网页多样化的呈现形式更能满足运营者的需求。如&腾讯公益&,需要向用户介绍项目进程、项目详情等,信息量较大,同时又需要兼顾用户捐款的便捷性,因此,在网页能够直接发起微信支付请求的需求非常迫切。如今,用户在查看完&腾讯公益&各项目介绍内容后,已能直接在网页底部点击捐款按钮,就能立即通过微信支付进行捐款。
附微信开放JS-SDK接口权限列表:
你可能喜欢 | You Might Also Like
clovey |  09:44
SocialBeta |  10:31
clovey |  14:30
一品内容官 |  10:39
clovey |  15:32
共有 0 条评论
暂时木有评论关于微信js的分享到朋友圈的功能,为什么失败也没提示_百度知道
关于微信js的分享到朋友圈的功能,为什么失败也没提示
我有更好的答案
可能是浏览器兼容的问题,或者你自己写的代码没有捕获到异常!
其他类似问题
为您推荐:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁微信 (发送好友、分享朋友圈) 功能的 js代码 - 推酷
微信 (发送好友、分享朋友圈) 功能的 js代码
1 function loadBless(){
document.addEventListener('WeixinJSBridgeReady', function onBridgeReady() {
var redirectsingleurl = encodeMyStr(&http://10.3.172.189:8080/OlaPushHtml/publish/wx/bless/homepage?from=singlemessage&isappinstalled=0&);
var redirectTimelineurl= encodeMyStr(&http://10.3.172.189:8080/OlaPushHtml/publish/wx/bless/homepage?from=timeline&isappinstalled=0&);
//发送朋友链接地址
var timelineLink =&https://open./connect/oauth2/authorize?appid=wx7c5e6aef953f4268&redirect_uri=&+redirectsingleurl+&&response_type=code&scope=snsapi_base&state=123#wechat_redirect&;
//分享朋友圈连接地址
var sendFriendLink = &https://open./connect/oauth2/authorize?appid=wx7c5e6aef953f4268&redirect_uri=&+redirectTimelineurl+&&response_type=code&scope=snsapi_base&state=123#wechat_redirect&;
//这儿是全局变量
window.shareData = {
&imgUrl&: &/olaweb/activities/resource/activity-lottery-1.png&,
&timeLineLink&: timelineLink,
&sendFriendLink&: sendFriendLink,
&weiboLink&: &http://10.3.172.189/olaweb/wx/bless/homepage&,
&tTitle&: &我在活动,你也一起来参加&,
&tContent&: &我在活动,你也一起来参加!&,
&fTitle&: &我在活动,你也一起来参加&,
&fContent&: &我在活动,你也一起来参加!&,
&wContent&: &我在活动,你也一起来参加!&
//发送给好友
WeixinJSBridge.on('menu:share:appmessage', function (argv) {
//根据具体的情况在不同情形下改变连接的地址 重新设置shareData中的link 地址内容
window.shareData = {
&imgUrl&: &/olaweb/activities/resource/activity-lottery-1.png&,
&timeLineLink&: timelineLink,
&sendFriendLink&: sendFriendLink,
&weiboLink&: &http://10.3.172.189/olaweb/wx/bless/homepage&,
&tTitle&: &我在活动,你也一起来参加&,
&tContent&: &我在活动,你也一起来参加!&,
&fTitle&: &我在活动,你也一起来参加&,
&fContent&: &我在活动,你也一起来参加!&,
&wContent&: &我在活动,你也一起来参加!&
WeixinJSBridge.invoke('sendAppMessage', {
&img_url&: window.shareData.imgUrl,
&img_width&: &640&,
&img_height&: &640&,
&link&: window.shareData.sendFriendLink,
&desc&: window.shareData.fContent,
&title&:window.shareData.fTitle
}, function (res) {
//发送完成之后处理的逻辑
shareActivity(&appmessage&);
_report('send_msg', res.err_msg);
// 分享到朋友圈
WeixinJSBridge.on('menu:share:timeline', function (argv) {
shareActivity(&sharefriend&);
WeixinJSBridge.invoke('shareTimeline', {
&img_url&: window.shareData.imgUrl,
&img_width&: &640&,
&img_height&: &640&,
&link&: window.shareData.timeLineLink,
&desc&: window.shareData.tContent,
&title&: window.shareData.tTitle
}, function (res) {
//发送完成之后处理的逻辑
_report('timeline', res.err_msg);
function shareActivity(message){
cache : false,
type: &POST&,
url : &activity&,
sharemessage : message
dataType : &json&,
error : function(data) {
running = false;
sAlert(&亲,网络好像不给力哦!&);
clearInterval(timer);
timeout : 40000
//encode url
function encodeMyStr(str) {
var strTmp=encodeURI(str);
strTmp=strTmp.replace(/\+/g,&%2B&);
return strT
已发表评论数()
已收藏到推刊!
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
排版有问题
没有分页内容
视频无法显示
图片无法显示关于微信js的分享到朋友圈的功能,为什么失败也没提示_百度知道
关于微信js的分享到朋友圈的功能,为什么失败也没提示微信JS接口 - 为程序员服务
微信JS接口
10163 阅读
微信JS接口 分享到朋友圈 分享给朋友 分享到QQ 拍照或从手机相册中选图 识别音频并返回识别结果 使用微信内置地图查看位置来源:&
1.引入JS文件
在需要调用JS接口的页面引入如下JS文件,(支持https):
备注:支持使用 AMD/CMD 标准模块加载方法加载
2.注入配置config接口
所有需要使用JSSDK的页面必须先注入配置信息,否则将无法调用(同一个url仅需调用一次,对于变化url的SPA的web app可在每次url变化时进行调用)。
wx.config({
debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: '', // 必填,公众号的唯一标识
timestamp: , // 必填,生成签名的时间戳
nonceStr: '', // 必填,生成签名的随机串
signature: '',// 必填,签名,见附录1
jsApiList: [] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
3.验证通过ready接口
wx.ready(function(){
// config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
4.验证失败error接口
wx.error(function(res){
// config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
接口调用说明
所有接口通过wx对象(也可使用jWeixin对象)来调用,参数是一个对象,除了每个接口本身需要传的参数之外,还有以下通用参数:
success:接口调用成功时执行的回调函数。
fail:接口调用失败时执行的回调函数。
complete:接口调用完成时执行的回调函数,无论成功或失败都会执行。
cancel:用户点击取消时的回调函数,仅部分有用户取消操作的api才会用到。
trigger: 监听Menu中的按钮点击时触发的方法,该方法仅支持Menu中的相关接口。
以上几个函数都带有一个参数,类型为对象,其中除了每个接口本身返回的数据之外,还有一个通用属性errMsg,其值格式如下:
调用成功时:”xxx:ok” ,其中xxx为调用的接口名
用户取消时:”xxx:cancel”,其中xxx为调用的接口名
调用失败时:其值为具体错误信息
判断当前客户端版本是否支持指定JS接口
wx.checkJsApi({
jsApiList: ['chooseImage'] // 需要检测的JS接口列表,所有JS接口列表见附录2,
success: function(res) {
// 以键值对的形式返回,可用的api值true,不可用为false
// 如:{"checkResult":{"chooseImage":true},"errMsg":"checkJsApi:ok"}
获取&分享到朋友圈&按钮点击状态及自定义分享内容接口
wx.onMenuShareTimeline({
title: '', // 分享标题
link: '', // 分享链接
imgUrl: '', // 分享图标
success: function () {
// 用户确认分享后执行的回调函数
cancel: function () {
// 用户取消分享后执行的回调函数
获取&分享给朋友&按钮点击状态及自定义分享内容接口
wx.onMenuShareAppMessage({
title: '', // 分享标题
desc: '', // 分享描述
link: '', // 分享链接
imgUrl: '', // 分享图标
type: '', // 分享类型,music、video或link,不填默认为link
dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空
success: function () {
// 用户确认分享后执行的回调函数
cancel: function () {
// 用户取消分享后执行的回调函数
获取&分享到QQ&按钮点击状态及自定义分享内容接口
wx.onMenuShareQQ({
title: '', // 分享标题
desc: '', // 分享描述
link: '', // 分享链接
imgUrl: '' // 分享图标
success: function () {
// 用户确认分享后执行的回调函数
cancel: function () {
// 用户取消分享后执行的回调函数
获取&分享到腾讯微博&按钮点击状态及自定义分享内容接口
wx.onMenuShareWeibo({
title: '', // 分享标题
desc: '', // 分享描述
link: '', // 分享链接
imgUrl: '' // 分享图标
success: function () {
// 用户确认分享后执行的回调函数
cancel: function () {
// 用户取消分享后执行的回调函数
拍照或从手机相册中选图接口
wx.chooseImage({
success: function (res) {
var localIds = res.localI // 返回选定照片的本地ID列表,localId可以作为img标签的src属性显示图片
预览图片接口
wx.previewImage({
current: '', // 当前显示的图片链接
urls: [] // 需要预览的图片链接列表
上传图片接口
wx.uploadImage({
localId: '', // 需要上传的图片的本地ID,由chooseImage接口获得
isShowProgressTips: 1// 默认为1,显示进度提示
success: function (res) {
var serverId = res.serverId; // 返回图片的服务器端ID
备注:可用微信下载多媒体文件接口下载上传的图片,此处获得的 serverId 即 media_id,参考文档
下载图片接口
wx.downloadImage({
serverId: '', // 需要下载的图片的服务器端ID,由uploadImage接口获得
isShowProgressTips: 1// 默认为1,显示进度提示
success: function (res) {
var localId = res.localId; // 返回图片下载后的本地ID
开始录音接口
wx.startRecord();
停止录音接口
wx.stopRecord({
success: function (res) {
var localId = res.localId;
监听录音自动停止接口
wx.onVoiceRecordEnd({
// 录音时间超过一分钟没有停止的时候会执行 complete 回调
complete: function (res) {
var localId = res.localId;
播放语音接口
wx.playVoice({
localId: '' // 需要播放的音频的本地ID,由stopRecord接口获得
暂停播放接口
wx.pauseVoice({
localId: '' // 需要暂停的音频的本地ID,由stopRecord接口获得
停止播放接口
wx.stopVoice({
localId: '' // 需要停止的音频的本地ID,由stopRecord接口获得
监听语音播放完毕接口
wx.onVoicePlayEnd({
serverId: '', // 需要下载的音频的服务器端ID,由uploadVoice接口获得
success: function (res) {
var localId = res.localId; // 返回音频的本地ID
上传语音接口
wx.uploadVoice({
localId: '', // 需要上传的音频的本地ID,由stopRecord接口获得
isShowProgressTips: 1// 默认为1,显示进度提示
success: function (res) {
var serverId = res.serverId; // 返回音频的服务器端ID
备注:可用微信下载多媒体文件接口下载上传的语音,此处获得的 serverId 即 media_id,参考文档
下载语音接口
wx.downloadVoice({
serverId: '', // 需要下载的音频的服务器端ID,由uploadVoice接口获得
isShowProgressTips: 1// 默认为1,显示进度提示
success: function (res) {
var localId = res.localId; // 返回音频的本地ID
识别音频并返回识别结果接口
wx.translateVoice({
localId: '', // 需要识别的音频的本地Id,由录音相关接口获得
isShowProgressTips: 1, // 默认为1,显示进度提示
success: function (res) {
alert(res.translateResult); // 语音识别的结果
获取网络状态接口
wx.getNetworkType({
success: function (res) {
var networkType = res.networkT // 返回网络类型2g,3g,4g,wifi
使用微信内置地图查看位置接口
wx.openLocation({
latitude: 0, // 纬度,浮点数,范围为90 ~ -90
longitude: 0, // 经度,浮点数,范围为180 ~ -180。
name: '', // 位置名
address: '', // 地址详情说明
scale: 1, // 地图缩放级别,整形值,范围从1~28。默认为最大
infoUrl: '' // 在查看位置界面底部显示的超链接,可点击跳转
获取地理位置接口
wx.getLocation({
timestamp: 0, // 位置签名时间戳,仅当需要兼容6.0.2版本之前时提供
nonceStr: '', // 位置签名随机串,仅当需要兼容6.0.2版本之前时提供
addrSign: '', // 位置签名,仅当需要兼容6.0.2版本之前时提供,详见附录4
success: function (res) {
var longitude = res. // 纬度,浮点数,范围为90 ~ -90
var latitude = res. // 经度,浮点数,范围为180 ~ -180。
var speed = res. // 速度,以米/每秒计
var accuracy = res. // 位置精度
隐藏右上角菜单接口
wx.hideOptionMenu();
显示右上角菜单接口
wx.showOptionMenu();
关闭当前网页窗口接口
wx.closeWindow();
批量隐藏功能按钮接口
wx.hideMenuItems({
menuList: [] // 要隐藏的菜单项,所有menu项见附录3
批量显示功能按钮接口
wx.showMenuItems({
menuList: [] // 要显示的菜单项,所有menu项见附录3
隐藏所有非基础按钮接口
wx.hideAllNonBaseMenuItem();
显示所有功能按钮接口
wx.showAllNonBaseMenuItem();
微信扫一扫
调起微信扫一扫接口
wx.scanQRCode({
desc: 'scanQRCode desc',
needResult: 0, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
scanType: ["qrCode","barCode"], // 可以指定扫二维码还是一维码,默认二者都有
success: function () {
var result = res.resultS // 当needResult 为 1 时,扫码返回的结果
编辑收货地址接口
wx.editAddress(
timestamp: 0, // 位置签名时间戳,仅当需要兼容6.0.2版本之前时提供
nonceStr: '', // 位置签名随机串,仅当需要兼容6.0.2版本之前时提供
addrSign: '', // 位置签名,仅当需要兼容6.0.2版本之前时提供,详见附录4
success: function (res) {
var userName = res.userN // 收货人姓名
var telNumber = res.telN // 收货人电话
var postalCode = res.postalC // 邮编
var provinceName = res.provinceN // 国标收货地址第一级地址
var cityName = res.cityN // 国标收货地址第二级地址
var countryName = res.countryN // 国标收货地址第三级地址
var address = res. // 详细收货地址信息
var nationalCode = res.nationalC // 收货地址国家码
获取最近的收货地址接口
wx.getLatestAddress({
timestamp: 0, // 位置签名时间戳,仅当需要兼容6.0.2版本之前时提供
nonceStr: '', // 位置签名随机串,仅当需要兼容6.0.2版本之前时提供
addrSign: '', // 位置签名,仅当需要兼容6.0.2版本之前时提供,详见附录4
success: function (res) {
var userName = res.userN // 收货人姓名
var telNumber = res.telN // 收货人电话
var postalCode = res.postalC // 邮编
var provinceName = res.provinceN // 国标收货地址第一级地址
var cityName = res.cityN // 国标收货地址第二级地址
var countryName = res.countryN // 国标收货地址第三级地址
var address = res. // 详细收货地址信息
var nationalCode = res.nationalC // 收货地址国家码
跳转微信商品页接口
wx.openProductSpecificView({
productId: '', // 商品id
viewType: '' // 0.默认值,普通商品详情页1.扫一扫商品详情页2.小店商品详情页
调起适用于门店的卡券列表并获取用户选择列表
wx.chooseCard({
shopId: '', // 门店Id
cardType: '', // 卡券类型
cardId: '', // 卡券Id
timeStamp: 0, // 卡券签名时间戳
nonceStr: '', // 卡券签名随机串
cardSign: '', // 卡券签名,详见附录6
success: function (res) {
var cardList= res.cardL // 用户选中的卡券列表信息
批量添加卡券接口
wx.addCard({
cardList: [{
cardId: '',
cardExt: ''
}], // 需要添加的卡券列表
success: function (res) {
var cardList = res.cardL // 添加的卡券列表信息
查看微信卡包中的卡券接口
wx.openCard({
cardList: [{
cardId: '',
}]// 需要打开的卡券列表
发起一个微信支付请求
wx.chooseWXPay({
timestamp: 0, // 支付签名时间戳
noncestr: '', // 支付签名随机串
package: '', // 订单详情扩展字符串,详见附录5
paySign: '', // 支付签名,详见附录5
附录1-JSSDK使用权限签名算法
jsapi_ticket
生成签名之前必须先了解一下jsapi_ticket,jsapi_ticket是公众号用于调用微信JS接口的临时票据。正常情况下,jsapi_ticket的有效期为7200秒,通过access_token来获取。由于获取jsapi_ticket的api调用次数非常有限,频繁刷新jsapi_ticket会导致api调用受限,影响自身业务,开发者必须在自己的服务全局缓存jsapi_ticket&。
参考以下文档获取access_token(有效期7200秒,开发者必须在自己的服务全局缓存access_token):
用第一步拿到的access_token 采用http GET方式请求获得jsapi_ticket(有效期7200秒,开发者必须在自己的服务全局缓存jsapi_ticket):
成功返回如下JSON:
"errcode":0,
"errmsg":"ok",
"ticket":"bxLdikRXVbTPdHSM05e5u5sUoXNKd8-41ZO3MhKoyN5OfkWITDGgnr2fwJ0m9E8NYzWKVZvdVtaUgWvsdshFKA",
"expires_in":7200
获得jsapi_ticket之后,就可以生成JSSDK权限验证的签名了。
签名生成规则如下:参与签名的字段包括noncestr(随机字符串), 有效的jsapi_ticket, timestamp(时间戳), url(当前网页的URL,不包含#及其后面部分) 。对所有待签名参数按照字段名的ASCII 码从小到大排序(字典序)后,使用URL键值对的格式(即key1=value1&key2=value2&)拼接成字符串string1。这里需要注意的是所有参数名均为小写字符。对string1作sha1加密,字段名和字段值都采用原始值,不进行URL 转义。
即signature=sha1(string1)。 示例:
noncestr=Wm3WZYTPz0wzccnW
jsapi_ticket=sM4AOVdWfPE4DxkXGEs8VMCPGGVi4C3VM0P37wVUCFvkVAy_90u5h9nbSlYy3-Sl-HhTdfl2fzFy1AOcHKP7qg
timestamp=
步骤1. 对所有待签名参数按照字段名的ASCII 码从小到大排序(字典序)后,使用URL键值对的格式(即key1=value1&key2=value2&)拼接成字符串string1:
jsapi_ticket=sM4AOVdWfPE4DxkXGEs8VMCPGGVi4C3VM0P37wVUCFvkVAy_90u5h9nbSlYy3-Sl-HhTdfl2fzFy1AOcHKP7qg&noncestr=Wm3WZYTPz0wzccnW&timestamp=&url=http://mp.
步骤2. 对string1进行sha1签名,得到signature:
f4d90daf4b3bca175ba34c443a7b
签名用的noncestr和timestamp必须与wx.config中的nonceStr和timestamp相同。
签名用的url必须是调用JS接口页面的完整URL。
出于安全考虑,开发者必须在服务器端实现签名的逻辑。
附录2-所有JS接口列表
onMenuShareTimeline
onMenuShareAppMessage
onMenuShareQQ
onMenuShareWeibo
startRecord
stopRecord
onVoiceRecordEnd
pauseVoice
onVoicePlayEnd
uploadVoice
downloadVoice
chooseImage
previewImage
uploadImage
downloadImage
translateVoice
getNetworkType
openLocation
getLocation
hideOptionMenu
showOptionMenu
hideMenuItems
showMenuItems
hideAllNonBaseMenuItem
showAllNonBaseMenuItem
closeWindow
scanQRCode
chooseWXPay
getLatestAddress
editAddress
openProductSpecificView
chooseCard
附录3-所有按钮列表
举报: “menuItem:exposeArticle”
调整字体: “menuItem:setFont”
日间模式: “menuItem:dayMode”
夜间模式: “menuItem:nightMode”
刷新: “menuItem:refresh”
查看公众号(已添加): “menuItem:profile”
查看公众号(未添加): “menuItem:addContact”
发送给朋友: “menuItem:share:appMessage”
分享到朋友圈: “menuItem:share:timeline”
分享到QQ: “menuItem:share:qq”
分享到Weibo: “menuItem:share:weiboApp”
收藏: “menuItem:favorite”
分享到FB: “menuItem:share:facebook”
调试: “menuItem:jsDebug”
编辑标签: “menuItem:editTag”
删除: “menuItem:delete”
复制链接: “menuItem:copyUrl”
原网页: “menuItem:originPage”
阅读模式: “menuItem:readMode”
在QQ浏览器中打开: “menuItem:openWithQQBrowser”
在Safari中打开: “menuItem:openWithSafari”
邮件: “menuItem:share:email”
一些特殊公众号: “menuItem:share:brand”
附录4-位置与地址签名生成算法
addrSign的生成规则与JSSDK权限验证的签名生成规则相同(参考附录1),只是参与签名参数有所不同。参与addrSign的签名参数有:appId、url(当前网页url)、timestamp、noncestr、accesstoken(用户授权凭证,请参照oauth2.0 协议获取)。
附录5-支付扩展字段及签名生成算法
订单详情(package)扩展字符串定义
在商户调起JS API 时,商户需要此时确定该笔订单详情,并将该订单详情通过一定的方式进行组合放入package。JS API 调用后,微信将通过package 的内容生成预支付单。下 面将定义package 的所需字段列表以及签名方法。 接口需要注意:所有传入参数都是字符串类型!
附录6-卡券扩展字段及签名生成算法
附录7-常见错误解决方法
附录8-DEMO页面和示例代码
又一个码农站点
原文地址:, 感谢原作者分享。
您可能感兴趣的代码

我要回帖

更多关于 微信朋友圈分享功能 的文章

 

随机推荐