zoukankan      html  css  js  c++  java
  • .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('上传多媒体文件失败。
    {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);
        }
    长链接转短链接的示例

    感谢您看完本文,希望对您有所帮助。

  • 相关阅读:
    HIHO线段树(成段)
    HIHO 线段树(单点)
    POJ 3468
    HDU 1754
    HDU 1698
    HDU 5119
    HDU 1394
    HDU 1166
    DZY Loves Chessboard
    谷歌Cookies无法写入
  • 原文地址:https://www.cnblogs.com/xrwang/p/PublicAccount-BasicInterface.html
Copyright © 2011-2022 走看看