微信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. 28、跟我来一起精通echarts吧

    1.折线图 option = { title : { text: '未来一周气温变化', subtext: '纯属虚构' }, tooltip : { trigger: 'axis' }, legen ...

  2. GIM企业即时通讯

    GIM企业即时通讯是笔者Garfield(QQ:3674571)采用.NetFramework4.0+SQL2008R2开发的一套企业内网/外网 通用的即时通讯(IM)软件,分为服务器端和客户端,通讯 ...

  3. C# 读取Excel内容

    一.方法 1.OleD方法实现该功能. 2.本次随笔内容只包含读取Excel内容,并另存为. 二.代码 (1)找到文档代码 OpenFileDialog openFile = new OpenFile ...

  4. linux C学习笔记05--信号量与共享内存(进程同步)

    花了半天时间把信号量与共享内存整合到了一起,先来看信号量代码,semaphore.c 当中sem_P()和sem_V()函数分别为信号量等待和信号量释放. 两个进程同时访问共享内存,为了避免发生同时读 ...

  5. 循序渐进Python3(三) -- 0 -- 初识函数

    函数 如果我们要计算一个圆的面积,就需要知道它的半径,然后根据公式S=3.14*r*r算出它的面积,如果我们要算100个圆的面积,则每次我们都需要写公式去计算,是不是很麻烦,但是有了函数的话,我们就不 ...

  6. 使用sessionStorage、localStorage存储数组与对象(转)

    http://my.oschina.net/crazymus/blog/371757 使用sessionStorage.localStorage存储数组与对象 发表于3个月前(2015-01-26 1 ...

  7. Builder(生成器)-对象创建型模式

    一.意图 将一个复杂对象的构建与它的表示分离,使得同样的构造过程可以创建不同的表示. 二.动机 一个复杂的对象的构造过程中,原料相同,可能会要求生产不同的产品,并且生产的产品种类还能够方便的增加.Bu ...

  8. 点亮一个led灯

    /********************************* 代码功能:点亮一个led灯 使用函数: pinMode(引脚号,模式); digitalWrite(引脚号,电平状态); //默认 ...

  9. C#中TreeView与数据库绑定

    protected void CreateTreeView() { TreeNode rootNode = new TreeNode(); rootNode.Text = "全部" ...

  10. STS 代码提示快捷键 和 注解提示的修改

    window->Preferences window->Preferences