微信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. 1.No MBR错误

    如果提示如下错误: Error: No MBR is found at SD/MMC.                                              Hint: use f ...

  2. python基础知识---变量

    一.变量是什么? python变量是对内存中一个数据结构的引用,用一个变量给另外一个变量赋值,那就有两个变量引用同一个数据结构(数字.字符串.列表.元组.字典.自定义对象等) 当一个数据结构的引用计数 ...

  3. Nginx 反向代理、负载均衡、页面缓存、URL重写以及读写分离

    1.环境准备 前端Nginx:10.160.65.44 后端WEB服务器两台:10.160.65.49/10.160.65.50 2.安装Nginx: 下载nginx-1.9.15.tar.gz,放置 ...

  4. 第 一 百 天上课 PHP TP框架 数据库修改和删除

    修改的三种方式 //造数组的方式修改 public function xiugai1() { $db=D('yonghu'); $attr=array ( 'zhanghao'=>001, // ...

  5. arpg网页游戏之地图(三)

    地图分块加载类MapEngine,主要包含以下属性: g 地图层graphics,地图将画在上面 buffPixelRange 地图加载范围矩形 viewPort 屏幕视窗 currZoneArr 已 ...

  6. information_schema系列三(文件,变量)

    这个系列的文章主要是为了能够让自己了解MySQL5.7的一些系统表,统一做一下备注和使用,也希望分享出来让大家能够有一点点的受益. 1:FILES 这张表提供了有关在MySQL的表空间中的数据存储的文 ...

  7. HDU 3775 Chain Code ——(Pick定理)

    Pick定理运用在整点围城的面积,有以下公式:S围 = S内(线内部的整点个数)+ S线(线上整点的个数)/2 - 1.在这题上,我们可以用叉乘计算S围,题意要求的答案应该是S内+S线.那么我们进行推 ...

  8. CSS3凹凸字

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xht ...

  9. xsltproc docbook 转 html

    /etc/xml/catalog <?xml version="1.0" encoding="UTF-8"?> <catalog xmlns= ...

  10. mormot 数据集转换为JSON字串

    mormot 数据集转换为JSON字串 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graph ...