本文講述微信公眾號開發中基礎介面的使用,包括以下內容:
(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
示範效果如下圖:
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 : "获取许可令牌失败。"; }
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); }
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('上传多媒体文件失败。\r\n{0}');", errorMessage); } 上传多媒体文件,并生成下载链接的示例
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 = ""; }
靜態方法有:
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); }