.Net實現微信JS-SDK分享功能代碼展示

來源:互聯網
上載者:User
這篇文章主要介紹了JS-SDK分享功能的.Net實現代碼的相關資料,需要的朋友可以參考下

JS-SDK介面是什麼?

為了方便開發人員實現內的網頁(基於瀏覽器訪問的網頁)功能,比如拍照、選圖、語音、位置等手機系統的能力,並方便開發人員直接使用分享、掃一掃等特有的能力,推出了JS-SDK的整體開發包,供開發人員方便使用。

分享功能

官方文檔裡提供了php、java、node.js以及python的範例程式碼,唯獨沒有c#版的,為了彌補廣大.net使用者的需求,我把php版本的範例程式碼邏輯照搬成了.net版,並在網頁前端中加入了分享功能,希望對大家有用。

程式實現

流程圖

程式裡關鍵的類是JSSDK,裡麵包含服務端請求認證的所有邏輯過程,下面是過程的流程圖:

關鍵程式碼分析

為保證第三方伺服器與伺服器之間資料轉送的安全性,所有介面採用https方式調用,所以.net裡引用了比較高版本(.Net 4.5+)的網路包進行http請求。


private string httpGet(string url){  if (url.StartsWith("https"))    System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;  HttpClient httpClient = new HttpClient();  httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));  HttpResponseMessage response = httpClient.GetAsync(url).Result;  if (response.IsSuccessStatusCode)  {    string result = response.Content.ReadAsStringAsync().Result;    return result;  }  return null;}

擷取access_token,先從本地的access_token.aspx裡找,如果沒有或者到期(7000秒),則重新到伺服器擷取。


private string getAccessToken(){  string accessToken = string.Empty;  var data = JObject.Parse(getAspxFile("access_token.aspx", ASPX_HEAD[1]));  if (data != null && long.Parse(data["expire_time"].ToString()) < Utils.ConvertTimeStamp(DateTime.Now))  {    string url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="      + this.appId + "&secret=" + this.appSecret;    var jRes = JObject.Parse(httpGet(url));    accessToken = jRes["access_token"].ToString();    if (!string.IsNullOrEmpty(accessToken))    {      data["expire_time"] = Utils.ConvertTimeStamp(new DateTime()) + 7000;      data["access_token"] = accessToken;      setAspxFile("access_token.aspx", data.ToString(), ASPX_HEAD[1]);    }  }  else    accessToken = data["access_token"].ToString();  return accessToken;}

擷取jsapi_ticket,原理與access_token一樣。


private string getJsApiTicket(){  string ticket = string.Empty;  var data = JObject.Parse(getAspxFile("jsapi_ticket.aspx", ASPX_HEAD[0]));  if (data != null && long.Parse(data["expire_time"].ToString()) < Utils.ConvertTimeStamp(DateTime.Now))  {    string accessToken = getAccessToken();    string url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&access_token="      + accessToken;    var jRes = JObject.Parse(httpGet(url));    ticket = jRes["ticket"].ToString();    if (!string.IsNullOrEmpty(ticket))    {      data["expire_time"] = Utils.ConvertTimeStamp(new DateTime()) + 7000;      data["jsapi_ticket"] = ticket;      setAspxFile("jsapi_ticket.aspx", data.ToString(), ASPX_HEAD[0]);    }  }  else    ticket = data["jsapi_ticket"].ToString();  return ticket;}
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.