首頁  >  文章  >  微信小程式  >  .net微信公眾號開發-基礎接口

.net微信公眾號開發-基礎接口

高洛峰
高洛峰原創
2017-02-22 15:45:381693瀏覽

   本文講述微信公眾號開發中基礎介面的使用,包括以下內容:
    (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
    示範效果如下圖:

.net微信公眾號開發-基礎接口

##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 上傳、下載多媒體檔案

    MultiiaHelper類別封裝 MultiiaHelper類別封裝 MultiiaHelper類別封裝 Multi。了多媒體檔案的相關方法。
    靜態方法有:
    Upload-上傳多媒體檔案
    Download-下載多媒體檔案
    GetDownloadUrl-取得多媒體檔案的位址
    GetMediaId-取得訊息群發中的視訊媒體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(&#39;上传多媒体文件失败。\r\n{0}&#39;);", 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微信公眾號開發-基礎介面相關文章請關注PHP中文網!


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn