作者:王先荣
    本文讲述微信公众号开发中基础接口的使用,包括以下内容:
    (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微信公众号开发——基础接口的更多相关文章

  1. C#微信公众号开发-高级接口-之网页授权oauth2.0获取用户基本信息(二)

    C#微信公众号开发之网页授权oauth2.0获取用户基本信息(一) 中讲解了如果通过微信授权2.0snsapi_base获取已经关注用户的基本信息,然而很多情况下我们经常需要获取非关注用户的信息,方法 ...

  2. 微信公众号开发API接口大全

    在本文中,我们列出微信公众平台上可以使用的API接口以及举例如何在微信公众平台调用这些接口实现相应的功能. 接口调用说明: ① Appkey请使用的微信公众号,不要使用默认的trailuser ② 接 ...

  3. C#微信公众号开发-高级接口-之模板消息开发,附源码

    个人觉得模板消息功能的增加对公众号的作用非常大,可以说是真正意义上的实现了所谓的轻app,商家可以通过模板消息给用户发送重要的信息,交易.预约.消费.邮件.物流等信息.之前我做过的系统通过邮件发送订单 ...

  4. ASP.NET MVC4 微信公众号开发之网页授权(一):搭建基础环境

    首先你得注册并认证一个个人或企业的微信公众号===服务号从而确保获得以下接口权限: 然后打开公众号设置里的功能设置里找到业务域名和网页授权域名分别填上你的域名(注:已备案的域名),如下图所示: 到这里 ...

  5. 3.微信公众号开发:配置与微信公众平台服务器交互的URL接口地址

    微信开发基本原理: 1.首先有3个对象 分别是微信用户端 微信公众平台服务器 开发者服务器(也就是放自己代码的服务器) 三者间互相交互 2.微信公众平台服务器 充当中间者角色 (以被动回复消息为例) ...

  6. C#微信公众号开发系列教程六(被动回复与上传下载多媒体文件)

    微信公众号开发系列教程一(调试环境部署) 微信公众号开发系列教程一(调试环境部署续:vs远程调试) C#微信公众号开发系列教程二(新手接入指南) C#微信公众号开发系列教程三(消息体签名及加解密) C ...

  7. C#微信公众号开发 -- (七)自定义菜单事件之VIEW及网页(OAuth2.0)授权

    通俗来讲VIEW其实就是我们在C#中常用的a标签,可以直接在自定义菜单URL的属性里面写上需要跳转的链接,也即为单纯的跳转. 但更多的情况下,我们是想通过VIEW来进入指定的页面并进行操作. 举一个简 ...

  8. 微信公众号开发之网页中及时获取当前用户Openid及注意事项

    目录 (一)微信公众号开发之VS远程调试 (二)微信公众号开发之基础梳理 (三)微信公众号开发之自动消息回复和自定义菜单 (四)微信公众号开发之网页授权获取用户基本信息 (五)微信公众号开发之网页中及 ...

  9. VopSdk一个高逼格微信公众号开发SDK(源码下载)

    看之前回复很多说明大家很有热情&文章被误删掉了,不想让有的朋友错失这个高逼格的东西,现在重新发布,这次就直接放出源码,文章最末下载地址. 看之前回复很多说明大家很有热情&文章被误删掉了 ...

随机推荐

  1. 『TCP/IP详解——卷一:协议』读书笔记——05

    2013-08-19 22:35:57 2.6 PPP:点对点协议 PPP点对点协议修改了SLIP协议中的所有缺陷: 1. 在串联链路上封装IP数据报的方法.PPP即支持数据为8位&无奇偶检验 ...

  2. Web程序的桌面提醒

    做web开发常会面对的一个问题是,浏览器最小化的时候如何才能向用户发送通知.解决办法大概有三种:让用户有事没事儿搂两眼页面:开发一个桌面客户端:Html5的Notification API. 目前没看 ...

  3. .Net下 自动执行MSI和EXE文件

    MSI是安装文件,需要系统自带的msiexec.exe来执行 var tempDir = @"D:\UploadFiles\SCADASetupWix.msi"; var star ...

  4. Kindle 转换器

    一款比较好用的Kindle转换器,支持txt, opf, htm, html, epub 到 mobi 的转换,支持拖放操作,支持批量操作.只需要选中多个待转换的文件,拖放到程序窗口即可. 曾经用过一 ...

  5. [安卓] 5、SeekBar拖动条

    越来越发现这些控件用法大同小异了,这里注意几个函数:seekBar.setSecondaryProgress(0);设置初始进度为0,总共为0~99,对其监听用setOnSeekBarChangeLi ...

  6. 献上两个java小算法

    直接上代码: /** * Name: 求数组中元素重复次数对多的数和重复次数 * Description: * 数组中的元素可能会重复,这个方法可以找出重复次数最多的数,同时可以返回重复了多少次. * ...

  7. 升级webapi依赖的Newtonsoft.json的版本

    随着微软日渐重视开源社区的贡献,微软在自己的产品中往往也会集成开源的第三方库. 比如System.Net.Http.Foramatting.dll 就依赖于Newtonsoft.json v4.5. ...

  8. Vue学习笔记1

    目录 前言 1.vue和avalon一样,都不支持VM初始时不存在的属性 2.input元素中属性与v-model同时存在以属性为优先 3.VM中的函数放到data属性和methods属性中的区别,以 ...

  9. 【Android】混淆器(ProGuard)

    混淆器(ProGuard) 混淆器通过删除从未用过的代码和使用晦涩名字重命名类.字段和方法,对代码进行压缩,优化和混淆.结果是一个比较小的.apk文件,该文件比较难进行逆向工程.因此,当你的应用程序对 ...

  10. Liferay7 BPM门户开发之29: 核心kernel.util包下面的通用帮助类ParamUtil、GetterUtil使用

    与其闭门造车,不如直接开动原装.进口.免费的法拉利. -- 作者说 不多说废话,直接上代码. ParamUtil ParamUtil.GetterUtil是Liferay最重要的帮助类 ParamUt ...