.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);
    }
長鏈接轉短鏈接的示例

感謝您看完本文,希望對您有所幫助。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM