全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

微信JS-SDK分享功能的.Net实现代码

JS-SDK接口是什么?

为了方便开发者实现微信内的网页(基于微信浏览器访问的网页)功能,比如拍照、选图、语音、位置等手机系统的能力,并方便开发者直接使用微信分享、扫一扫等微信特有的能力,微信推出了JS-SDK的整体开发包,供开发者方便使用。

分享功能

官方文档里提供了php、java、node.js以及python的示例代码,唯独没有c#版的,为了弥补广大.net用户的需求,我把php版本的示例代码逻辑照搬成了.net版,并在网页前端中加入了分享功能,希望对大家有用。

程序实现

流程图

程序里关键的类是JSSDK,里面包含服务端请求认证的所有逻辑过程,下面是过程的流程图:

关键代码分析

为保证第三方服务器与微信服务器之间数据传输的安全性,所有微信接口采用https方式调用,所以.net里引用了比较高版本(.Net 4.5+)的网络包进行http请求。

private string httpGet(string url)
{
  if (url.StartsWith("https"))
    System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;

  HttpClient httpClient = new HttpClient();
  httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
  HttpResponseMessage response = httpClient.GetAsync(url).Result;

  if (response.IsSuccessStatusCode)
  {
    string result = response.Content.ReadAsStringAsync().Result;
    return result;
  }
  return null;
}

获取access_token,先从本地的access_token.aspx里找,如果没有或者过期(7000秒),则重新到微信服务器获取。

private string getAccessToken()
{
  string accessToken = string.Empty;
  var data = JObject.Parse(getAspxFile("access_token.aspx", ASPX_HEAD[1]));
  if (data != null && long.Parse(data["expire_time"].ToString()) < Utils.ConvertTimeStamp(DateTime.Now))
  {
    string url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="
      + this.appId + "&secret=" + this.appSecret;
    var jRes = JObject.Parse(httpGet(url));
    accessToken = jRes["access_token"].ToString();
    if (!string.IsNullOrEmpty(accessToken))
    {
      data["expire_time"] = Utils.ConvertTimeStamp(new DateTime()) + 7000;
      data["access_token"] = accessToken;
      setAspxFile("access_token.aspx", data.ToString(), ASPX_HEAD[1]);
    }
  }
  else
    accessToken = data["access_token"].ToString();
  return accessToken;
}

获取jsapi_ticket,原理与access_token一样。

private string getJsApiTicket()
{
  string ticket = string.Empty;
  var data = JObject.Parse(getAspxFile("jsapi_ticket.aspx", ASPX_HEAD[0]));
  if (data != null && long.Parse(data["expire_time"].ToString()) < Utils.ConvertTimeStamp(DateTime.Now))
  {
    string accessToken = getAccessToken();
    string url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&access_token="
      + accessToken;
    var jRes = JObject.Parse(httpGet(url));
    ticket = jRes["ticket"].ToString();
    if (!string.IsNullOrEmpty(ticket))
    {
      data["expire_time"] = Utils.ConvertTimeStamp(new DateTime()) + 7000;
      data["jsapi_ticket"] = ticket;
      setAspxFile("jsapi_ticket.aspx", data.ToString(), ASPX_HEAD[0]);
    }
  }
  else
    ticket = data["jsapi_ticket"].ToString();
  return ticket;
}

完整代码

https://github.com/stozen/jssdk-wxshare

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# .Net  # 微信JS-SDK分享  # 微信JS-SDK  # JS-SDK  # 解析微信JS-SDK配置授权  # 实现分享接口  # 微信JS-SDK自定义分享功能实例详解【分享给朋友/分享到朋友圈】  # 关于微信jssdk实现多图片上传的一点心得分享  # 微信js-sdk+JAVA实现“分享到朋友圈”和“发送给朋友”功能详解  # 微信分享调用jssdk实例  # 浅谈微信JS-SDK 微信分享接口开发(介绍版)  # 微信js-sdk分享功能接口常用逻辑封装示例  # thinkPHP微信分享接口JSSDK用法实例  # 微信JS-SDK updateAppMessageShareData安卓不能自定义分享详解  # 微信JSSDK分享功能图文实例详解  # 成了  # 并在  # 较高  # 我把  # 如果没有  # 特有的  # 第三方  # 一扫  # 服务端  # 大家多多  # 新到  # 推出了  # 开发包  # 文档  # 为保证  # application  # httpGet  # StartsWith  # url  # private 


相关文章: 制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?  上海制作企业网站有哪些,上海有哪些网站可以让企业免费发布招聘信息?  如何选购建站域名与空间?自助平台全解析  如何正确下载安装西数主机建站助手?  建站主机如何选?性能与价格怎样平衡?  公司门户网站制作流程,华为官网怎么做?  官网自助建站系统:SEO优化+多语言支持,快速搭建专业网站  浅析上传头像示例及其注意事项  百度网页制作网站有哪些,谁能告诉我百度网站是怎么联系?  专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?  php能控制zigbee模块吗_php通过串口与cc2530 zigbee通信【介绍】  如何快速选择适合个人网站的云服务器配置?  建站之星安装步骤有哪些常见问题?  建站之家VIP精选网站模板与SEO优化教程整合指南  ,巨量百应是干嘛的?  建站之星3.0如何解决常见操作问题?  如何将凡科建站内容保存为本地文件?  如何有效防御Web建站篡改攻击?  建站之星官网登录失败?如何快速解决?  如何用搬瓦工VPS快速搭建个人网站?  如何快速重置建站主机并恢复默认配置?  在线流程图制作网站手机版,谁能推荐几个好的CG原画资源网站么?  详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)  SAX解析器是什么,它与DOM在处理大型XML文件时有何不同?  建设网站制作价格,怎样建立自己的公司网站?  建站之星好吗?新手能否轻松上手建站?  建站之星导航菜单设置与功能模块配置全攻略  如何通过老薛主机一键快速建站?  建站之星安装提示数据库无法连接如何解决?  如何选择可靠的免备案建站服务器?  c# Task.Yield 的作用是什么 它和Task.Delay(1)有区别吗  公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?  较简单的网站制作软件有哪些,手机版网页制作用什么软件?  javascript中对象的定义、使用以及对象和原型链操作小结  网站制作多少钱一个,建一个论坛网站大约需要多少钱?  如何快速辨别茅台真假?关键步骤解析  小说建站VPS选用指南:性能对比、配置优化与建站方案解析  定制建站如何定义?其核心优势是什么?  如何配置支付宝与微信支付功能?  详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)  网站好制作吗知乎,网站开发好学吗?有什么技巧?  成都网站制作公司哪家好,四川省职工服务网是做什么用?  南京网站制作费用,南京远驱官方网站?  微信小程序 input输入框控件详解及实例(多种示例)  行程制作网站有哪些,第三方机票电子行程单怎么开?  如何快速搭建FTP站点实现文件共享?  官网自助建站平台指南:在线制作、快速建站与模板选择全解析  如何选择长沙网站建站模板?H5响应式与品牌定制哪个更优?  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  设计网站制作公司有哪些,制作网页教程? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。