国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Heim WeChat-Applet WeChat-Entwicklung Beispiel-Tutorial zur ASP.NET MVC WeChat JS-SDK-Zertifizierung

Beispiel-Tutorial zur ASP.NET MVC WeChat JS-SDK-Zertifizierung

Apr 25, 2017 am 11:31 AM
asp.net mvc Wechat

ASP.NET MVC微信JS-SDK認(rèn)證,具體內(nèi)容:

寫(xiě)在前面

前陣子因?yàn)橛袀€(gè)項(xiàng)目需要做微信自定義分享功能,因而去研究了下微信JS-SDK相關(guān)知識(shí)。

此文做個(gè)簡(jiǎn)單的記(tu)錄(cao)...

開(kāi)始
所有的東西都從文檔開(kāi)始:微信JSSDK說(shuō)明文檔

項(xiàng)目需要用到的是分享接口 不過(guò)使用微信JS-SDK之前,需要做JS接口認(rèn)證。

認(rèn)證如下:

步驟一:綁定域名

步驟二:引入JS文件

步驟三:通過(guò)config接口注入權(quán)限驗(yàn)證配置

步驟四:通過(guò)ready接口處理成功驗(yàn)證

步驟五:通過(guò)error接口處理失敗驗(yàn)證

具體解釋:

步驟一中允許使用域名/子域名,只要xx.com/xxx.txt或者xx.com/mp/xxx.txt能訪問(wèn)就好。域名認(rèn)證通過(guò)之后,此域名下的所有端口的網(wǎng)站都可以使用JS-SDK。

步驟二沒(méi)什么問(wèn)題,略過(guò)。

步驟三最磨人,下面單獨(dú)講解。

config接口注入權(quán)限驗(yàn)證配置

先來(lái)一段說(shuō)明:

所有需要使用JS-SDK的頁(yè)面必須先注入配置信息,否則將無(wú)法調(diào)用(同一個(gè)url僅需調(diào)用一次,對(duì)于變化url的SPA的web app可在每次url變化時(shí)進(jìn)行調(diào)用,目前Android微信客戶端不支持pushState的H5新特性,所以使用pushState來(lái)實(shí)現(xiàn)web app的頁(yè)面會(huì)導(dǎo)致簽名失敗,此問(wèn)題會(huì)在Android6.2中修復(fù))。

wx.config({
 debug: true, // 開(kāi)啟調(diào)試模式,調(diào)用的所有api的返回值會(huì)在客戶端alert出來(lái),
 //若要查看傳入的參數(shù),可以在pc端打開(kāi),參數(shù)信息會(huì)通過(guò)log打出,僅在pc端時(shí)才會(huì)打印。
 appId: '', // 必填,公眾號(hào)的唯一標(biāo)識(shí)
 timestamp: , // 必填,生成簽名的時(shí)間戳
 nonceStr: '', // 必填,生成簽名的隨機(jī)串
 signature: '',// 必填,簽名,見(jiàn)附錄1
 jsApiList: [] // 必填,需要使用的JS接口列表,所有JS接口列表見(jiàn)附錄2
});

看到這里肯定懵逼了,這是都什么鬼...怎么玩啊。

提示我們?nèi)タ锤戒?...看完之后總結(jié)如下:

1.使用config接口注入權(quán)限驗(yàn)證配置,重點(diǎn)是生成合法的signatrue
2.生成signature需要通過(guò)appid和secret獲取token
3.時(shí)間戳和調(diào)用接口URL必不可少
4.此操作需要服務(wù)端完成,不能使用客戶端實(shí)現(xiàn)

整個(gè)過(guò)程變成:

1.通過(guò)appid和secret獲取access_token,接著使用token獲取jsapi_ticket;

2.拿到j(luò)sapi_ticket之后,把jsapi_ticket、時(shí)間戳、隨機(jī)字符串、接口調(diào)用頁(yè)面URL 拼接成完整字符串,使用sha1算法加密得到signature。

3.最后返回至頁(yè)面,在wx.config里面填入appid,上一步的時(shí)間戳timestamp,上一部的隨機(jī)字符串、sha1拿到的signature,想要使用的JS接口。

廢話少說(shuō),直接上代碼吧。

代碼時(shí)間

 public class WeiXinController : Controller
 {
 public static readonly string appid =
 System.Web.Configuration.WebConfigurationManager.AppSettings["wxappid"];

 public static readonly string secret =
 System.Web.Configuration.WebConfigurationManager.AppSettings["wxsecret"];

 public static readonly bool isDedug =
 System.Web.Configuration.WebConfigurationManager.AppSettings["IsDebug"] =="true";


 public static string _ticket = "";
 public static DateTime _lastTimestamp;

 public ActionResult Info(string url,string noncestr)
 {
  if (string.IsNullOrEmpty(_ticket) || 
  _lastTimestamp == null || (_lastTimestamp - DateTime.Now).Milliseconds > 7200)
  {
  var resultString = HTTPHelper.GetHTMLByURL("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="
   + appid + "&secret=" + secret);
  dynamic resultValue = JsonConvert.DeserializeObject<dynamic>(resultString);
  if (resultValue == null || resultValue.access_token == null 
  || resultValue.access_token.Value == null)
  {
   return Json(new { issuccess = false, 
   error = "獲取token失敗" });
  }
  var token = resultValue.access_token.Value;

  resultString = HTTPHelper.GetHTMLByURL
  ("https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=" + 
  token + "&type=jsapi");
  dynamic ticketValue = JsonConvert.DeserializeObject<dynamic>(resultString);
  if (ticketValue == null || ticketValue.errcode == null
  || ticketValue.errcode.Value != 0 || ticketValue.ticket == null)
   return Json(new { issuccess = false,
   error = "獲取ticketValue失敗" });
  _ticket = ticketValue.ticket.Value;
  _lastTimestamp = DateTime.Now;
  var timestamp = GetTimeStamp();
  var hexString = string.Format("jsapi_ticket={0}&noncestr={3}&timestamp={1}&url={2}",
  _ticket, timestamp, url,noncestr);

  return Json(new {
   issuccess = true, 
   sha1value = GetSHA1Value(hexString), 
   timestamp = timestamp, 
   url = url, 
   appid = appid, 
   debug=isDedug,
   tiket=_ticket
  });
  
  }
  else
  {
  var timestamp = GetTimeStamp();
  var hexString = string.Format("jsapi_ticket={0}&noncestr=1234567890123456&timestamp={1}&url={2}",
   _ticket, timestamp, url);
  return Json(new { 
   issuccess = true, sha1value = GetSHA1Value(hexString),
   timestamp = timestamp, url = url,
   appid = appid, debug = isDedug,tiket = _ticket
  });
  }
 }


 private string GetSHA1Value(string sourceString)
 {
  var hash = SHA1.Create().ComputeHash(Encoding.UTF8.GetBytes(sourceString));
  return string.Join("", 
  hash.Select(b => b.ToString("x2")).ToArray());
 }

 private static string GetTimeStamp()
 {

  TimeSpan ts = DateTime.Now - new DateTime(1970, 1, 1, 0, 0, 0, 0);

  return Convert.ToInt64(ts.TotalSeconds).ToString();

 }

 }
 
 public class HTTPHelper
 {
 public static string GetHTMLByURL(string url)
 {
  string htmlCode = string.Empty;
  try
  {
  HttpWebRequest webRequest = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(url);
  webRequest.Timeout = 30000;
  webRequest.Method = "GET";
  webRequest.UserAgent = "Mozilla/4.0";
  webRequest.Headers.Add("Accept-Encoding", "gzip, deflate");
  HttpWebResponse webResponse = (System.Net.HttpWebResponse)webRequest.GetResponse();
  //獲取目標(biāo)網(wǎng)站的編碼格式
  string contentype = webResponse.Headers["Content-Type"];
  Regex regex = new Regex("charset\\s*=\\s*[\\W]?\\s*([\\w-]+)", RegexOptions.IgnoreCase);
  if (webResponse.ContentEncoding.ToLower() == "gzip")//如果使用了GZip則先解壓
  {
   using (System.IO.Stream streamReceive = webResponse.GetResponseStream())
   {
   using (var zipStream = new System.IO.Compression.GZipStream(streamReceive, System.IO.Compression.CompressionMode.Decompress))
   {
    //匹配編碼格式
    if (regex.IsMatch(contentype))
    {
    Encoding ending = Encoding.GetEncoding
    (regex.Match(contentype).Groups[1].Value.Trim());
    using (StreamReader sr = new System.IO.StreamReader(zipStream, ending))
    {
     htmlCode = sr.ReadToEnd();
    }
    }
    else
    {
    using (StreamReader sr = new System.IO.StreamReader(zipStream, Encoding.UTF8))
    {
     htmlCode = sr.ReadToEnd();
    }
    }
   }
   }
  }
  else
  {
   using (System.IO.Stream streamReceive = webResponse.GetResponseStream())
   {
   var encoding = Encoding.Default;
   if (contentype.Contains("utf"))
    encoding = Encoding.UTF8;
   using (System.IO.StreamReader sr = new System.IO.StreamReader(streamReceive, encoding))
   {
    htmlCode = sr.ReadToEnd();
   }

   }
  }
  return htmlCode;
  }
  catch (Exception ex)
  {
  return "";
  }
 }
 }

PS:這里要注意緩存一下_ticket(即access_token),照微信文檔說(shuō)的,access_token兩個(gè)小時(shí)內(nèi)有效,不需要頻繁調(diào)用。而且獲取access_token的接口有調(diào)用次數(shù)的限制,如果超過(guò)了次數(shù),就不允許調(diào)用了。

PPS:建議noncestr和URL由前臺(tái)傳入比較適合,使用 var theWebUrl = window.location.href.split('#')[0] 獲取URL,noncestr就隨意了。

PPPS:遇到詭異的invalid signature的時(shí)候,首先檢查url參數(shù),然后檢查noncestr,再不行重啟一下程序獲取一個(gè)新的token回來(lái)繼續(xù)玩。

Das obige ist der detaillierte Inhalt vonBeispiel-Tutorial zur ASP.NET MVC WeChat JS-SDK-Zertifizierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erkl?rung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Hei?e KI -Werkzeuge

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?e Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Hei?e Themen

PHP-Tutorial
1502
276
Kopieren Sie Comics (offizielle Website -Eingang) _copy Comics (NBA) Echtes Online -Leseportal Kopieren Sie Comics (offizielle Website -Eingang) _copy Comics (NBA) Echtes Online -Leseportal Jun 05, 2025 pm 04:12 PM

Das Kopieren von Comics ist zweifellos ein Schatz, der nicht übersehen werden kann. Hier finden Sie Basketball -Comics in verschiedenen Stilen, von leidenschaftlichen und inspirierenden Wettbewerbsgeschichten bis hin zu entspannten und humorvollen t?glichen Kom?dien. Unabh?ngig davon, ob Sie die Klassiker noch einmal erleben oder neue Werke entdecken m?chten, kann das Kopieren von Comics Ihre Bedürfnisse erfüllen. Durch das authentische Online-Leseportal, das von Copy Comics bereitgestellt wird, verabschieden Sie sich von der Mühe von Rabour-Ressourcen, genie?en Sie eine hochaufl?sende und reibungslose Leseerfahrung und k?nnen Ihre bevorzugten Comic-Autoren unterstützen und zur Entwicklung authentischer Comics beitragen.

Top 10 KI -Schreibsoftware -Rankings empfohlen, welche KI -Schreibsoftware kostenlos ist Top 10 KI -Schreibsoftware -Rankings empfohlen, welche KI -Schreibsoftware kostenlos ist Jun 04, 2025 pm 03:27 PM

Die Kombination der neuesten Branchentrends und mehrdimensionalen Bewertungsdaten im Jahr 2025 sind die folgenden Top-Ten-Empfehlungen für KI.

Sehen Sie sich die offizielle Seite von NIS Comics online für kostenlose Comics an. Die Free -Eintrags -Website der NIS Comics -Anmeldeseite Sehen Sie sich die offizielle Seite von NIS Comics online für kostenlose Comics an. Die Free -Eintrags -Website der NIS Comics -Anmeldeseite Jun 12, 2025 pm 08:18 PM

Nice Comics, eine immersive Leserfahrungsplattform, die sich der Erstellung von Comicliebhabern widmet, vereint eine gro?e Anzahl hochwertiger Comic-Ressourcen im In- und Ausland. Es ist nicht nur eine Comic -Leseplattform, sondern auch eine Community, die Comic -Künstler und Leser verbindet und die Comic -Kultur teilt. Mit einfachem und intuitivem Schnittstellendesign und leistungsstarken Suchfunktionen k?nnen Sie mit NES Comics Ihre Lieblingswerke problemlos finden und ein reibungsloses und komfortables Leseerlebnis genie?en. Verabschieden Sie sich von den langen Warten und mühsamen Operationen, betreten Sie sofort die Welt der netten Comics und beginnen Sie Ihre Comic -Reise!

Frog Man Online anzeigen Eingangsmann Frog Man (Webseiteneingang) online ansehen Frog Man Online anzeigen Eingangsmann Frog Man (Webseiteneingang) online ansehen Jun 12, 2025 pm 08:06 PM

Frogman Comics ist die erste Wahl für viele Comicliebhaber mit seinen reichen und vielf?ltigen Comic -Ressourcen und einem bequemen und reibungslosen Online -Leseerlebnis. Es ist wie ein pulsierender Teich, mit frischen und interessanten Geschichten, die st?ndig auftauchen und darauf warten, dass Sie entdecken und erkunden. Frog Man Comics berichten von einer Vielzahl von Themen, von leidenschaftlichen Abenteuern bis hin zu sü?er Liebe, von Fantasie und Science -Fiction bis hin zu Spannung, egal welches Genre Sie m?gen, Sie finden Ihre Lieblingswerke hier. Mit seinem einfachen und intuitiven Schnittstellendesign k?nnen Sie leicht loslegen, schnell die Comics finden, die Sie lesen m?chten, und sich in die aufregende Comic -Welt eintauchen.

Baozi Comics (Eingang) _ Baozi Comics (neuer Eingang) 2025 Baozi Comics (Eingang) _ Baozi Comics (neuer Eingang) 2025 Jun 05, 2025 pm 04:18 PM

Hier k?nnen Sie den riesigen Ozean der Comics genie?en und Werke verschiedener Themen und Stile erkunden, von leidenschaftlichen jungen Mann-Comics bis hin zu zarten und bewegenden M?dchen-Comics, von spannend und hirnverbrennenden Mystery-Comics bis hin zu entspannten und lustigen t?glichen Comics, alles, und es gibt immer eine, die Ihre Herzstrings berühren kann. Wir haben nicht nur eine gro?e Menge echter Comic -Ressourcen, sondern auch die neuesten Arbeiten st?ndig vor, um sicherzustellen, dass Sie Ihre Lieblingscomics so schnell wie m?glich lesen k?nnen.

Wie lade ich Huobi auf Android -Handys herunter? Huobi Download Tutorial (Schritt-für-Schritt-Tutorial) Wie lade ich Huobi auf Android -Handys herunter? Huobi Download Tutorial (Schritt-für-Schritt-Tutorial) Jun 12, 2025 pm 10:12 PM

Benutzer von Android Mobiltelefonen k?nnen die Huobi/Huobi -App in den folgenden Schritten herunterladen und installieren: 1. Stellen Sie sicher, dass das Netzwerk stabil ist und der Speicherplatz ausreicht; 2. Laden Sie die App über die offizielle Website von Huobi/Huobi herunter, greifen Sie mit dem Browser auf die offizielle Website zu und klicken Sie auf den Link Download oder scannen Sie den QR-Code. Suchen Sie und laden Sie sie über Anwendungsgesch?fte von Drittanbietern wie AppTreasure und Huawei-App-Markt herunter und laden Sie sie herunter. 3. Suchen Sie die heruntergeladene .APK -Datei, aktivieren Sie die Berechtigung "Unbekannte Quell -App", befolgen Sie die Eingabeaufforderungen, um die Installation abzuschlie?en usw.

Kann ich WeChat gleichzeitig auf zwei Telefonen verwenden? Kann ich WeChat gleichzeitig auf zwei Telefonen verwenden? Jul 11, 2025 am 03:28 AM

Ja, aber es gibt Einschr?nkungen. ① Sie k?nnen sich sowohl für iPhone als auch auf Android -Telefonen bei demselben Konto anmelden. Wenn Sie sich jedoch beim neuesten Ger?t anmelden, wird die früheste Sitzung offline sein. ② Sie k?nnen sich gleichzeitig auf dem Mobiltelefon und dem Computerdesktop anmelden, aber die Funktionen werden nicht synchronisiert. Obwohl die Verwendung von Tools von Drittanbietern oder Dual-App-Funktionen die Protokollierung zwischen zwei Mobiltelefonen erm?glichen kann, wird sie inoffiziell unterstützt und kann gegen Vorschriften versto?en. ④ Zu den alternativen L?sungen geh?rt die Verwendung der Webversion/der Desktop -Version, die zum Haupttelefon entspricht, oder über die übertragung von Chat -Datens?tzen über Cloud -Sicherungs- und Datei -Tools. Einige Android -Maschinen k?nnen auch "Dual -Anwendungen" verwenden, um zwei Kontoinstanzen auszuführen.

Ouyi Offizielle Webversion Login -Portal Ouyi OK Web Version Link Portal Ouyi Offizielle Webversion Login -Portal Ouyi OK Web Version Link Portal Jun 09, 2025 pm 05:57 PM

Um das offizielle Login-Portal von Ouyi Official Web Version sicher zu finden, müssen Sie zun?chst Informationen über den offiziellen Kanal erhalten und mit dem Browser-Tool zur überprüfung des Domain-Namens übereinstimmen. Benutzer sollten Eintrittsinformationen von offiziellen Ankündigungen, Social -Media -Konten und Eingabeaufforderungen in der App erhalten.

See all articles