まず、あなたはマイクロチャネルJS-SDKインターフェイスを呼び出すときに慎重に公式のノートを読む必要がある、またはそれはあまり効果的です。ここでは、おそらくプロセスの最初の主要な概要です、まず、マイクロチャネルの使用が公共のニーズを掃引認証の数をしてきた。第二に、国民はaccess_tokenはとチケットを得るために、APPIDとAPPSecrectの数を知る必要があります。その後、内部.NETを理解する必要がありますSHA1の暗号化クラス、その上に公式のJSへの最後の参照、。
コードの表示
パブリックドメインの数は結合でなければならないことに留意すべきです
<!DOCTYPE HTML> <HTML> <HEAD> <META NAME = "ビューポート"コンテンツ= "デバイス幅幅=" /> <タイトル>インデックス</ TITLE> <SCRIPT SRC =「HTTP://res.wx。 qq.com/open/js/jweixin-1.1.0.js "> </ SCRIPT> <SCRIPT SRC =" http://libs.baidu.com/jquery/2.0.0/jquery.js「> </ SCRIPT > <SCRIPT SRC = "〜/スクリプト/ WxScanQRCode.js"> </ SCRIPT> <SCRIPT> wx.config({ デバッグ:trueに、//デバッグ・モードがオンになっている、すべてのコールが値APIを返します警告クライアント。、入ってくるパラメータを見て、あなたはログをパラメータ情報を再生されます、PC側を開くことができ、場合にのみ、PC印刷されます 「@ ViewBag.appid」、//必要な、公共の固有の識別番号:APPID タイムスタンプ: '@ ViewBag.timestamp' //署名スタンプの生成、必要な 必須署名ランダムな文字列を生成、// 'ViewBag.noncestr @':nonceStrを 署名:「@のViewBag.sinatureを」、//必要な署名を jsApiList:[「checkJsApi」、 //インタフェースは、公式文書に関与している、我々は唯一の掃引できるマイクロチャンネルを呼び出す必要 //「chooseImage」、 //「previewImage」、 、//「uploadImage」を // 「DownloadImage」、 //「getNetworkType」、ネットワークインタフェースの状態は、// //「openLocation」、//内蔵マップビュー位置マイクロチャネルインターフェイス使用 //「のgetLocationを」、//地理的位置インタフェース得る //「をhideOptionMenu」/ /オペレータインタフェースインターフェイス。1 // 'showOptionMenu'、オペレータ・インターフェース・インターフェース// 2 // 'closeWindow'、////インタフェースのユーザインタフェース。3 // 'hideMenuItems'、////インタフェースのユーザインタフェース。4 // 'showMenuItems'、////インターフェース操作インターフェース5 // 'hideAllNonBaseMenuItem'、////インターフェース操作インターフェース6。 })。 // 'showAllNonBaseMenuItem'、////インターフェース操作インターフェース7 'scanQRCode'マイクロチャネルインターフェイスを掃引// ] }); <! -スキャンスタート- > 関数スキャン(){ wx.ready(関数(){ document.getElementById _scan = VAR( "URL"); _scan.value = window.location.href; wx.scanQRCode({ needResult :. 1、 DESC: 'scanQRCodeのDESC'、 成功:関数(RES){ アラート(JSON.stringify (RES)); } }) } </ SCRIPT> </ヘッド> <body> <DIV> の<input type = "text"の名= "URL" ID = "URL"> <ボタンID = "scanbutton"タイプ= "ボタン"のonclick = "スキャン()" >スキャンにはこちらをクリック</ボタン> </ div> </ BODY> </ HTML>
コントローラコード
まず、我々はAccessTokenに応じjsapi_ticket取得した後に、APPIDとAPPSecrectに応じaccess_tokenは取得する必要があります。最後に、内部的に最初の二つの後、タイムスタンプコントローラ、ランダムな文字列を生成し、チケット署名SHA1の暗号化に応じて、サーバは、コールのインタフェースを掃引することができるようにすることで、認証した後、マイクロチャネルを送信します。
インデックスのActionResultのパブリック() { //取得access_tokenは 文字列_url =()Request.Url.ToString; //取得チケット 文字列_ticket = Requestjsapi_ticket(request_url()); //取得チケット 文字列_finalticket = _ticket; //取得noncestr 文字列_noncestrをCreatenNonce_str =(); //取得したタイムスタンプ ロング_TimeStamp = CreatenTimestamp(); //取得sinature 文字列_sinature = GetSignature(_finalticket、_noncestr、_TimeStamp、_url).ToLower(); ViewBag.appidは= "ここにあなたのAPPIDを埋めるために"。 ViewBag.timestamp = _timestamp。 ViewBag.noncestr = _noncestr。 ViewBag.sinature = _sinature。 ビューを返します(); } //获取AccessToken パブリック静的文字列Request_Url() { //设置参数 ストリング_appid = "这里写入你APPID的"。 文字列_appsecret = "这里写入你的APPSecrect"。 文字列_url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + _appid + "&秘密=" + _appsecret。 文字列メソッド=「GET」。 HttpWebRequestのようHttpWebRequestの要求= WebRequest.Create(_url)。 CookieContainer cookieContainer =新しいCookieContainer(); request.CookieContainer = cookieContainer。 request.AllowAutoRedirect =はtrue。 = request.ContentType "テキスト/ HTML"; request.Headers.Add( "文字セット"、 "UTF-8"); //リクエストを送信し、適切な応答データを得るにはある 。HttpWebResponseのAS HttpWebResponseのrequest.GetResponseレスポンス=() //までrequest.GetResponse()ポストプログラムは、ターゲット・ページにリクエストを送り始め ストリームresponseStream response.GetResponseStream =(); StreamReaderをStreamReaderを新たに新SR =(responseStream、Encoding.UTF8); //結果ページ(HTML)コードを返し SR文字列の内容=を。 ReadToEnd(); { //サーバから返されたマイクロチャネルJSON文字列は、多くの情報を含んでいるので、我々は唯一のAccessTokenを取得する必要があり、JSON分割する必要がある 文字列を[] STR = content.Split( ' "「); コンテンツ=列str [3]。 コンテンツを返します。 } //根据AccessToken来获取jsapi_ticket パブリック静的文字列Requestjsapi_ticket(列accesstoken) 列_accesstoken = accesstoken。 文字列のurl = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=" + _accesstoken + "&タイプ= JSAPI"; 文字列メソッド=「GET」。 HttpWebRequestの要求= WebRequest.Create HttpWebRequestのような(URL)。 CookieContainer cookieContainer =新しいCookieContainer(); request.CookieContainer = cookieContainer。 request.AllowAutoRedirect =はtrue。 request.Method =方法。 request.ContentType = " request.Headers.Add( "文字セット"、 "UTF-8"); // request.GetResponseまで()プロシージャは、ターゲットページのポストにリクエストを送り始め ストリームresponseStream response.GetResponseStream =(); StreamReaderをStreamReaderを新たに新SR =(responseStream、Encoding.UTF8); //結果ページ(HTML)コードを返す 文字列の内容をsr.ReadToEnd =(); //また、情報は単にJSONは、チケットに戻さ除去される 文字列[] = content.Split STR( '「'); コンテンツSTR = [9]; コンテンツを返す; } //コンタクト補助ツールダウンし、それはランダムな文字列を生成 #regionランダムな文字列CreatenNonce_strを() プライベート静的文字列[] = STRの新しい新しい文字列[] { } )(sb.ToStringを返します。 } } )(sb.ToStringを返します。} } )(sb.ToStringを返します。} "A"、 "B"、 "C"、 "D"、 "E"、 "F"、 "G"、 "H"、 "I"、 "J"、 "K"、 "L"、 "M 」、 "N"、 "O"、 "P"、 "Q"、 "R"、 "S"、 "T"、 "U"、 "V"、 "W"、 "X"、 "Y"、 "Z" }。 パブリック静的文字列CreatenNonce_str() { ランダムR =新しいランダム(); VAR SB =新しいStringBuilderの(); VAR長= strs.Length。 以下のために(; iは15 <; I = 0 int型私は++) { sb.Append(STRS [r.Next(長さ- 1)])。 リターン(DateTime.Now.ToUniversalTime()ダニ- 621355968000000000.)/ 10000000; } #endregion //三つのパラメータは、以前にチケットを生成された署名、タイムスタンプ、ランダムな文字列取得 #region取得した署名GetSignatureを() GetSignature静的な文字列のパブリック(jsapi_ticket文字列、文字列のnoncestr、タイムスタンプロング、文字列のURL) { VAR =新しい新string1BuilderのStringBuilder(); 。string1Builder.Append( "jsapi_ticket =")アペンド(jsapi_ticket).Append( "&") .Append( "noncestr =")。追加(noncestr).Append( "&") ; 返すSHA1(string1Builder.ToString()); .Append("タイムスタンプ=「)。追加(タイムスタンプ).Append( "&") .Append( "URL =")追加(Url.IndexOf( "#")> = 0 url.substring(0、url.IndexOf( "#")):?のURL); } #endregion //最後のステップは、SHA1であります暗号化アルゴリズムツール #region署名暗号化アルゴリズムSHAL(コンテンツ) //署名アルゴリズム暗号化 パブリック静的な文字列SHAL(文字列の内容は) { SHAL(コンテンツ、Encoding.UTF8)を返す; } //暗号化された署名 のパブリック静的文字列SHA1(文字列コンテンツ、エンコードエンコード) { 試み { SHAL新しい新しいSHA1CryptoServiceProvider = SHA1(); バイト[] = bytes_in encode.GetBytes(コンテンツ)。 バイト[] = sha1.ComputeHash bytes_out(bytes_in); sha1.Dispose(); 文字列結果= BitConverter.ToString(bytes_out)。 結果= result.Replace( " - "、 ""); 結果を返します。 } キャッチ(例外例) { 新しい例外( "SHA1加密出错:" + ex.Message)を投げます。 } } #endregion
概要
コードは、文字列を生成するために、公認または結合の数、ドメイン名だけでなく、最終的な暗号化アルゴリズムの精度を注意するために使用することができますコピーし、以下のステップた、我々は適切なリターンの結果を得ることはありません。
転載します。https://blog.csdn.net/SugaryoTT/article/details/78558105