微信JS-SDK分享功能的.Net实现代码
发布时间 - 2026-01-11 03:15:22 点击率:次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
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
JavaScript如何实现音频处理_Web Audio API如何工作?
千库网官网入口推荐 千库网设计创意平台入口
HTML透明颜色代码怎么让图片透明_给img元素加透明色的技巧【方法】
简单实现Android验证码
微信小程序 配置文件详细介绍
打开php文件提示内存不足_怎么调整php内存限制【解决方案】
Win11怎样安装网易有道词典_Win11安装词典教程【步骤】
如何在宝塔面板创建新站点?
如何解决hover在ie6中的兼容性问题
Win11怎么开启自动HDR画质_Windows11显示设置HDR选项
米侠浏览器网页图片不显示怎么办 米侠图片加载修复
如何在云主机上快速搭建多站点网站?
C++时间戳转换成日期时间的步骤和示例代码
mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?
如何在阿里云通过域名搭建网站?
网页设计与网站制作内容,怎样注册网站?
android nfc常用标签读取总结
Java遍历集合的三种方式
Laravel怎么实现API接口鉴权_Laravel Sanctum令牌生成与请求验证【教程】
Laravel如何实现API版本控制_Laravel版本化API设计方案
家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?
三星、SK海力士获美批准:可向中国出口芯片制造设备
如何使用 Go 正则表达式精准提取括号内首个纯字母标识符(忽略数字与嵌套)
使用PHP下载CSS文件中的所有图片【几行代码即可实现】
如何构建满足综合性能需求的优质建站方案?
如何选择可靠的免备案建站服务器?
Laravel用户认证怎么做_Laravel Breeze脚手架快速实现登录注册功能
INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】
音乐网站服务器如何优化API响应速度?
如何制作一个表白网站视频,关于勇敢表白的小标题?
Laravel如何实现邮件验证激活账户_Laravel内置MustVerifyEmail接口配置【步骤】
Laravel如何使用Blade组件和插槽?(Component代码示例)
活动邀请函制作网站有哪些,活动邀请函文案?
JavaScript如何实现错误处理_try...catch如何捕获异常?
北京企业网站设计制作公司,北京铁路集团官方网站?
Laravel如何处理JSON字段的查询和更新_Laravel JSON列操作与查询技巧
Laravel如何处理跨站请求伪造(CSRF)保护_Laravel表单安全机制与令牌校验
如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?
Laravel如何为API编写文档_Laravel API文档生成与维护方法
Python面向对象测试方法_mock解析【教程】
Python自然语言搜索引擎项目教程_倒排索引查询优化案例
Laravel如何获取当前登录用户信息_Laravel Auth门面使用与Session用户读取【技巧】
怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?
如何快速生成专业多端适配建站电话?
Laravel如何记录自定义日志?(Log频道配置)
如何在自有机房高效搭建专业网站?
如何快速搭建安全的FTP站点?
Internet Explorer官网直接进入 IE浏览器在线体验版网址
Google浏览器为什么这么卡 Google浏览器提速优化设置步骤【方法】
做企业网站制作流程,企业网站制作基本流程有哪些?

