微信JS-SDK是微信公众平台面向网页开发者提供的基于微信内的网页开发工具包。通过使用微信JS-SDK,网页开发者可借助微信高效地使用拍照、选图、语音、位置等手机系统的能力,同时可以直接使用微信分享、扫一扫、卡券、支付等微信特有的能力,为微信用户提供更优质的网页体验。

本文以介绍了分享接口里的“发送给朋友”事件的基本用法,其它的类推。

JSSDK使用步骤

1:绑定域名

先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。

备注:登录后可在“开发者中心”查看对应的接口权限。

2:引入JS文件

在需要调用JS接口的页面引入如下JS文件,(支持https):http://res.wx.qq.com/open/js/jweixin-1.0.0.js

本例中还用到了jquery,所以还引用了jquery的js。

3. 通过config接口注入权限验证配置

JS方法:

wx.config({

    debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。

    appId: '<%= appID %>', // 必填,公众号的唯一标识

    timestamp: '<%= timestamp %>', // 必填,生成签名的时间戳

    nonceStr: '<%= nonceStr %>', // 必填,生成签名的随机串

    signature: '<%= signature %>',// 必填,签名,见附录1

    // 必填,需要使用的JS接口列表,所有JS接口列表见附录2

    jsApiList: [

    'onMenuShareAppMessage'

    ]

});

这里只写了一个API接口onMenuShareAppMessage, 更多接口请参考官方文档:微信JS-SDK说明文档

debug设为true,会自动弹出一些提示信息;这里要注意的是,errmsg xxxx ok 是正常的,只有不是ok时才说明出错了。

有些参数是从后台取到的,放在Page_Load里:

string ticket = string.Empty;

timestamp = JSSDKHelper.GetTimestamp();

nonceStr = JSSDKHelper.GetNoncestr();

JSSDKHelper jssdkhelper = new JSSDKHelper();

public readonly string appID = ConfigurationManager.AppSettings["appID"];

ticket = JsApiTicketContainer.TryGetTicket(appID, appSecret);

signature = jssdkhelper.GetSignature(ticket, nonceStr, timestamp, Request.Url.AbsoluteUri.ToString());

官方提供了几个语言的demo,但就是没有c#版本的,没办法,只能自己动手。这里的 JSSDKHelper 和 JsApiTicketContainer 都是用的Senparc.Weixin 框架。

这些参数都是动态生成的,不能写死。否则这里就会出现一堆像什么 invalid signature 之类的错误。

4. 通过ready接口处理成功验证

JS 方法:

wx.ready(function () {

    wx.onMenuShareAppMessage({

        title: '用c#开发微信 系列汇总',

        desc: '网上开发微信开发的教程很多,但c#相对较少。这里列出了我所有c#开发微信的文章,方便自己随时查阅。如果可能,我尽量附上源码,这样就可以直接发布运行看效果,更好地理解原理。',

        link: url,

        imgUrl: 'http://demo.open.weixin.qq.com/jssdk/images/p2166127561.jpg',

        trigger: function (res) {

        },

        success: function (res) {

            friendcallback(res);

        },

        cancel: function (res) {

        },

        fail: function (res) {

            alert(JSON.stringify(res));

        }

    });

});

备注:不要尝试在trigger中使用ajax异步请求修改本次分享的内容,因为客户端分享操作是一个同步操作,这时候使用ajax的回包会还没有返回。

当分享成功(success)后,可以调用回调函数 friendcallback(res):

friendcallback = function (res) {

    var shareUrl = "Share.aspx?type=friend&url=" + encodeURIComponent(url) + "&u=" + "<%= ViewState["navOpenId"] as string %>" + "&s=" + "<%= ViewState["shareOpenId"] as string %>";

 

    //AJAX请求

    $.ajax({

        type: "get",

        url: shareUrl,

        beforeSend: function () {

        },

        success: function () {

        },

        complete: function () {

        },

        error: function () {

        }

    });

};

这里是用ajax把这次分享的记录通过share页面,保存到DB里去。当然你可以在这里做你想做的事。

用c#开发微信 系列汇总

用c#开发微信 (10) JS-SDK 基本用法- 分享接口“发送到朋友”的更多相关文章

  1. 用c#开发微信(10) JSSDK 基本用法 分享接口“发送到朋友”

    微信JS-SDK是微信公众平台面向网页开发者提供的基于微信内的网页开发工具包.通过使用微信JS-SDK,网页开发者可借助微信高效地使用拍照.选图.语音.位置等手机系统的能力,同时可以直接使用微信分享. ...

  2. 微信企业号JS SDK

    微信企业号JS SDK <?php define('CorpID', "wx82e2c31215d9a5a7"); define('CorpSecret', "&q ...

  3. 微信前端js sdk以外的开发

    此时页面中就会出现刚才我画红圈部分的工具条. 这个工具条再加上上面的标题栏工具条. 极大的降低了可视区域的面积. 是否能将它去掉呢?答案是能够的.增加以下代码就能够去掉微信中以下的工具条: docum ...

  4. python开发微信公众号SDK选择

    1.wechat-sdk sudo pip install wechat-sdk 文档地址:  http://ww2.wechat-python-sdk.com/ 2.wechat sudo pip ...

  5. 使用web api开发微信公众号,调用图灵机器人接口(二)

    此文将分两篇讲解,主要分为以下几步 签名校验; 首次提交验证申请; 接收消息; 被动响应消息(返回XML); 映射图灵消息及微信消息; 此篇为第二篇. 被动响应消息(返回XML) 上一篇中,我们已经可 ...

  6. 使用web api开发微信公众号,调用图灵机器人接口(一)

    此文将分两篇讲解,主要分为以下几步 签名校验; 首次提交验证申请; 接收消息; 被动响应消息(返回XML); 映射图灵消息及微信消息; 其实图灵机器人搭载微信公众号很简单,只需要把图灵的地址配到公众后 ...

  7. 用c#开发微信 (12) 微统计 - 阅读分享统计系统 2 业务逻辑实现

    微信平台自带的统计功能太简单,有时我们需要统计有哪些微信个人用户阅读.分享了微信公众号的手机网页,以及微信个人用户访问手机网页的来源:朋友圈分享访问.好友分享消息访问等.本系统实现了手机网页阅读.分享 ...

  8. 用c#开发微信 系列汇总

    网上开发微信开发的教程很多,但c#相对较少.这里列出了我所有c#开发微信的文章,方便自己随时查阅.   一.基础知识 用c#开发微信(1)服务号的服务器配置和企业号的回调模式 - url接入 (源码下 ...

  9. 调用微信js sdk

    场景:需要调用微信获取当前位置的借口. 途径:查看微信 https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115 .后 ...

随机推荐

  1. FORM触发器执行顺序

    触发器执行顺序: 1. 当打开FORM时: (1) PRE-FORM (2) PRE-BLOCK(BLOCK级) (3) WHEN-NEW-FORM-INSTANCE (4) WHEN-NEW-BLO ...

  2. redis 安装使用

    在 centos 7.2 系统上,安装使用redis.了解学习redis功能及特性. 版本: 3.2.4 1.安装: # yum install redis 2.配置: /etc/logrotate. ...

  3. PHPDocument 代码注释规范总结

    PHPDocument 代码注释规范 1. 安装phpDocumentor(不推荐命令行安装)在http://manual.phpdoc.org/下载最新版本的PhpDoc放在web服务器目录下使得通 ...

  4. linux查看访问windows共享目录NT_STATUS_DUPLICATE_NAME问题解决

    linux查看访问windows共享目录NT_STATUS_DUPLICATE_NAME问题解决 [jason@superfreak ~]$ smbclient //powerhouse-smb.my ...

  5. 1-9 TCP/IP参考模型

    ISO/OSI参考模型与TCP/IP模型对比 一.网络访问层 功能:包括IP地址与物理硬件地址的映射以及将IP地址封装成帧. 基于不同类型的网络接口,网路访问层定义了和物理介质的连接 网路访问层包含了 ...

  6. poj3241 曼哈顿最小距离生成树第k大的边

    思路: 已知: 要生成曼哈顿距离最小生成树,一个点最多和四周8个点连线,那8个点分别是将那个点四周360度平分成8个区间,每个区间里面和那个点曼哈顿距离最小的点,所以如果有n个点,那么最多有4n条边, ...

  7. 处理BOM

    [处理BOM]

  8. struts标签,<s:textfield>嵌套<s:property>的问题

    错误:org.apache.jasper.JasperException: /front/orderList.jsp(110,122) equal symbol expected   <s:te ...

  9. getch 和 getchar 在 windows 和 unix下的区别

    注意getch()是从console读取,(非标准函数) getch()需要的头文件是<conio.h>. 而getchar()是从stdin,一般是指键盘 windows平台下ENTER ...

  10. 各种 starter poms (启动器)

    starter包含了搭建项目,快速运行所需的依赖.它是一个依赖关系描述符的集合.当应用需要一种spring的服务时,不需要粘贴拷贝大量的依赖关系描述符.例如想在spring中使用redis,只需要在项 ...