.net微信公众号开发——基础接口
作者:王先荣
本文讲述微信公众号开发中基础接口的使用,包括以下内容:
(1)获取许可令牌(AccessToken);
(2)获取微信服务器地址;
(3)上传、下载多媒体文件;
(4)创建、显示二维码;
(5)长链接转短链接。
开源项目地址:http://git.oschina.net/xrwang2/xrwang.weixin.PublicAccount
本文的源代码地址:http://git.oschina.net/xrwang2/xrwang.weixin.PublicAccount/blob/master/xrwang.net/Example/BasicInterface.aspx.cs
本文的演示地址:http://xrwang.net/Example/BasicInterface.aspx
演示效果如下图:
1 获取许可令牌
AccessToken类封装了许可令牌的相关属性和方法。
(注:OAuthAccessToken封装了网页授权许可令牌的相关方法。)
属性有:
access_token——令牌字符串
expires_in——有效时间(单位:秒)
静态方法有:
Get——获取许可令牌
/// <summary>
/// 获取许可令牌
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnGetAccessToken_Click(object sender,EventArgs e)
{
string userName = lbPublicAccount.SelectedValue;
AccessToken token = AccessToken.Get(userName);
txtAccessToken.Text = token != null ? token.access_token : "获取许可令牌失败。";
}
获取许可令牌的示例
2 获取微信服务器地址
ServerAddresses类封装了获取服务器地址的属性和方法。
属性有:
ip_list——服务器地址数组
静态方法有:
Get——获取服务器地址
/// <summary>
/// 获取微信服务器地址
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnGetServerAddress_Click(object sender, EventArgs e)
{
ErrorMessage errorMessage;
ServerAddresses addresses = ServerAddresses.Get(out errorMessage);
if (errorMessage.IsSuccess && addresses.ip_list != null)
{
StringBuilder sb = new StringBuilder();
foreach (string ip in addresses.ip_list)
sb.AppendFormat("{0},", ip);
txtServerAddress.Text = sb.ToString();
}
else
txtServerAddress.Text = string.Format("获取微信服务器地址失败。{0}", errorMessage);
}
获取微信服务器地址的示例
3 上传、下载多媒体文件
MultiMediaHelper类封装了多媒体文件的相关方法。
静态方法有:
Upload——上传多媒体文件
Download——下载多媒体文件
GetDownloadUrl——获取多媒体文件的地址
GetVideoMediaId——得到消息群发中的视频媒体ID
/// <summary>
/// 上传多媒体文件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnUpload_Click(object sender, EventArgs e)
{
string userName = lbPublicAccount.SelectedValue;
MultiMediaTypeEnum type = (MultiMediaTypeEnum)Enum.Parse(typeof(MultiMediaTypeEnum), lbMultiMediaType.SelectedValue);
string filename = fileUpload.FileName;
byte[] bytes = fileUpload.FileBytes;
ErrorMessage errorMessage;
MultiMediaUploadResult result = MultiMediaHelper.Upload(userName, type, filename, bytes, out errorMessage);
if (errorMessage.IsSuccess && result != null)
hlShowMultiMedia.NavigateUrl = MultiMediaHelper.GetDownloadUrl(AccessToken.Get(userName).access_token, result.MediaId);
else
hlShowMultiMedia.NavigateUrl = string.Format("javascript:alert('上传多媒体文件失败。\r\n{0}');", errorMessage);
}
上传多媒体文件,并生成下载链接的示例
4 创建、显示二维码
QrCode类封装了跟二维码相关的属性与方法。
属性有:
ticket——二维码的ticket
expire_seconds——二维码的有效时间(单位:秒)
url——二维码图片解析后的地址
静态方法有:
Create——创建二维码,不同的重载方法可以创建不同类型的二维码
GetUrl——获取二维码图片的地址
/// <summary>
/// 创建二维码
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnCreateQrCode_Click(object sender, EventArgs e)
{
string userName = lbPublicAccount.SelectedValue;
string strSceneId = txtSceneId.Text;
QrCode qrcode=null;
ErrorMessage errorMessage;
if( cbIsTemple.Checked)
{
int expireSeconds = int.Parse(txtExpireSeconds.Text);
int sceneId;
if (int.TryParse(strSceneId, out sceneId))
qrcode = QrCode.Create(userName, expireSeconds, sceneId, out errorMessage);
else
errorMessage = new ErrorMessage(ErrorMessage.ExceptionCode, "场景值id必须为整数。");
}
else
{
int sceneId;
if (int.TryParse(strSceneId, out sceneId))
qrcode = QrCode.Create(userName, sceneId, out errorMessage);
else
qrcode = QrCode.Create(userName, strSceneId, out errorMessage);
}
if (errorMessage.IsSuccess && qrcode != null)
imgQrCode.ImageUrl = QrCode.GetUrl(qrcode.ticket);
else
imgQrCode.ImageUrl = "";
}
创建并显示二维码的示例
5 长链接转短链接
ShortUrl封装了长连接转短链接的方法。
静态方法有:
Get——将长链接转换成短链接
/// <summary>
/// 获取短链接
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnGetShortUrl_Click(object sender, EventArgs e)
{
string userName = lbPublicAccount.SelectedValue;
ErrorMessage errorMessage;
string shortUrl = ShortUrl.Get(userName, txtLongUrl.Text, out errorMessage);
if (errorMessage.IsSuccess && string.IsNullOrWhiteSpace(shortUrl))
txtShortUrl.Text = shortUrl;
else
txtShortUrl.Text = string.Format("获取短链接失败。{0}", errorMessage);
}
长链接转短链接的示例
感谢您看完本文,希望对您有所帮助。
.net微信公众号开发——基础接口的更多相关文章
- C#微信公众号开发-高级接口-之网页授权oauth2.0获取用户基本信息(二)
C#微信公众号开发之网页授权oauth2.0获取用户基本信息(一) 中讲解了如果通过微信授权2.0snsapi_base获取已经关注用户的基本信息,然而很多情况下我们经常需要获取非关注用户的信息,方法 ...
- 微信公众号开发API接口大全
在本文中,我们列出微信公众平台上可以使用的API接口以及举例如何在微信公众平台调用这些接口实现相应的功能. 接口调用说明: ① Appkey请使用的微信公众号,不要使用默认的trailuser ② 接 ...
- C#微信公众号开发-高级接口-之模板消息开发,附源码
个人觉得模板消息功能的增加对公众号的作用非常大,可以说是真正意义上的实现了所谓的轻app,商家可以通过模板消息给用户发送重要的信息,交易.预约.消费.邮件.物流等信息.之前我做过的系统通过邮件发送订单 ...
- ASP.NET MVC4 微信公众号开发之网页授权(一):搭建基础环境
首先你得注册并认证一个个人或企业的微信公众号===服务号从而确保获得以下接口权限: 然后打开公众号设置里的功能设置里找到业务域名和网页授权域名分别填上你的域名(注:已备案的域名),如下图所示: 到这里 ...
- 3.微信公众号开发:配置与微信公众平台服务器交互的URL接口地址
微信开发基本原理: 1.首先有3个对象 分别是微信用户端 微信公众平台服务器 开发者服务器(也就是放自己代码的服务器) 三者间互相交互 2.微信公众平台服务器 充当中间者角色 (以被动回复消息为例) ...
- C#微信公众号开发系列教程六(被动回复与上传下载多媒体文件)
微信公众号开发系列教程一(调试环境部署) 微信公众号开发系列教程一(调试环境部署续:vs远程调试) C#微信公众号开发系列教程二(新手接入指南) C#微信公众号开发系列教程三(消息体签名及加解密) C ...
- C#微信公众号开发 -- (七)自定义菜单事件之VIEW及网页(OAuth2.0)授权
通俗来讲VIEW其实就是我们在C#中常用的a标签,可以直接在自定义菜单URL的属性里面写上需要跳转的链接,也即为单纯的跳转. 但更多的情况下,我们是想通过VIEW来进入指定的页面并进行操作. 举一个简 ...
- 微信公众号开发之网页中及时获取当前用户Openid及注意事项
目录 (一)微信公众号开发之VS远程调试 (二)微信公众号开发之基础梳理 (三)微信公众号开发之自动消息回复和自定义菜单 (四)微信公众号开发之网页授权获取用户基本信息 (五)微信公众号开发之网页中及 ...
- VopSdk一个高逼格微信公众号开发SDK(源码下载)
看之前回复很多说明大家很有热情&文章被误删掉了,不想让有的朋友错失这个高逼格的东西,现在重新发布,这次就直接放出源码,文章最末下载地址. 看之前回复很多说明大家很有热情&文章被误删掉了 ...
随机推荐
- 用dom4j解析xml 报java.lang.NoClassDefFoundError:org/jaxen/JaxenException
转自:http://www.myexception.cn/java%20exception/95.html 源码如下: import java.io.File; import java.util.Li ...
- Coins(HDU 2844):一个会超时的多重背包
Coins HDU 2844 不能用最基础的多重背包模板:会超时的!!! 之后看了二进制优化了的多重背包. 就是把多重转变成01背包: 具体思路见:http://www.cnblogs.com/tt ...
- haskell中的cps
cps全称叫continuation passing style,简要来讲就是告诉函数下一步做什么的递归方式,由于普通递归有栈溢出的问题,而cps都是尾递归(tail recursion),尾递归则是 ...
- Sublime Text3开发工具安装emmet插件
第一步:Sublime Text导入Package Control 自动安装: 1.打开Sublime Text -->View --> Show Console 菜单打开控制台 2.粘贴 ...
- SQLSERVER监控复制并使用数据库邮件功能发告警邮件
SQLSERVER监控复制并使用数据库邮件功能发告警邮件 最近熬出病来了,都说IT行业伤不起,不说了,说回今天的正题 正题 上个月月底的时候因为要搬迁机房,需要将一个数据信息数据库先搬到我们的机房,然 ...
- SQL入门经典(一)之简介
今天是我第一天开通博客,也是我的第一篇博客.以后为大家带来第一篇关于学习技术性文章,这段时间会为大家带来是SQL入门学习.希望大家坚持读下去,因为学历有限.我也是初学者.语言表达能力不好和知识点不足, ...
- Android 控件架构
如果说Android上的app是一个有血有肉的人的话,那么人靠衣装马靠鞍,那么控件就是把app装扮的漂漂亮亮的“衣服”.那么安卓的控件到底是如何架构,又是如何渲染的了. 无论是什么控件,在Androi ...
- ServiceStack.Redis之IRedisClient<第三篇>
事实上,IRedisClient里面的很多方法,其实就是Redis的命令名.只要对Redis的命令熟悉一点就能够非常快速地理解和掌握这些方法,趁着现在对Redis不是特别了解,我也对着命令来了解一下这 ...
- [UML]UML系列——状态机图statechart diagram
系列文章 [UML]UML系列——用例图Use Case [UML]UML系列——用例图中的各种关系(include.extend) [UML]UML系列——类图Class [UML]UML系列——类 ...
- 使用gdb调试Python进程
使用gdb调试Python进程 有时我们会想调试一个正在运行的Python进程,或者一个Python进程的coredump.例如现在遇到一个mod_wsgi的进程僵死了,不接受请求,想看看究竟是运行到 ...