問題の背景:
リンクを設定するためのマイクロチャネルの開発は、別の後、公開番号、マイクロチャネルの支払いや他の開発に基づいて、数多くのカラフルな比較的ホットプレートアプリケーション開発分野であり、ここではマイクロチャネルに基づいて、今日は友人や他のプラットフォームの円にマイクロ文字のWebページ共有内の別の小さなセクションを開発し、柔軟性そして、小さなアイコンがデザインのアイデアやコードの機能を実行するために(下記参照します)。
分析:
我々は、すべての平均のブラウザのために、唯一他の人にこのページのリンクを共有することにより、共有することができる、ということを知っているが、柔軟な制御を行うことはできませんが、マイクロチャネルの開発経験の多様性と開発を可能に優れた開発プラットフォームのサポートなどより良い誰マイクロチャンネルページの場合には、共有のための詳細な分析を行うために、ここで、動的なコンテンツの多くを設定します。
問題:
それは、マイクロチャネルの共有をサポートしたい場合、我々は最初のマイクロチャネルの開発者アカウントが存在する必要があります確認する必要があり、以前のバージョンのため、多くのオンラインバージョンが存在することは、マイクロチャネルを共有することになると共有するための最初の画像<img>タグ内のデフォルトのWebクロールでありますこのバージョンは長い時間前に実施されることができるようにと言われ、現在のバージョンでは、このように、唯一のステップごとに来ることができることはできません。適用するには、マイクロチャネルプラットフォームに必要でない場合は、これを行う前に加えて、最初にすることは、APPIDとappSercertマイクロチャネル公共番号を取得します。ご覧くださいます。https://mp.weixin.qq.com/
プログラムの実装:
1.まず、ページ内の一時のAppIDとappSercert署名を介して取得、または検証することができない、取得署名がサーバーからaccess_tokenはとjsapi_ticket 2つのマイクロチャネルの情報を取得する必要がありますが、リクエストながら2は、一定の有効期限情報を持っています周波数が高すぎることはできません、それが保存されている必要があり、それが再び取得したときに有効期限が切れ、これは情報を格納するテーブルを構築するためにMySQLを使用する理由、です。このテーブルには、いくつかのSQLによって作成することができます。
NOTが存在する場合はCREATE TABLEをwechat_share_info`( `を
` id`はint(11)NOT NULL AUTO_INCREMENT、
`access_token`のVARCHAR(500)COLLATEのutf8mb4_binデフォルトのNULL 、
` jsapi_ticket`のVARCHAR(500)COLLATEのutf8mb4_binデフォルトのNULL 、 `add_time`日時DEFAULT NULL 、 PRIMARY KEY ( `id`))ENGINE = InnoDBのデフォルト文字セット= utf8mb4のCOLLATE = utf8mb4_bin AUTO_INCREMENT = 4。
2. access_tokenは、このテーブル、フロントエンドのための第三のステップは、本明細書ThinkPHPフレームワークの実装、他の同様のフレームを使用したマイクロチャネルを介してメモリに必要な情報次キャッシュテーブルとjsapi_ticketを、作成しました。
/ *
*取得JSAPI共有署名
* /
機能getWinChatShareSignature(){
$ PAGEURL = $ _ POST [ 'URL' ];
date_default_timezone_set( "上海のアジア/" );
$シェア= D( 'wechat_share_info') - > ()検索; $ = jsapi_ticket "" ; //あなたは情報を追加し、情報を得るためにされていない場合は (!ISSET($レポートこのコンテンツを共有する場合{// GET access_tokenは$ getTokenUrl =))「https://api.weixin.qq.com/cgi-bin /token?grant_type=client_credential&appid=".C('WEI_SHARE_APPID')."&secret=".C('WEI_APP_SECERT " ); $ tokenContent =のfile_get_contents($ getTokenUrl ); json_decodeの= tokenContentObj $($ tokenContent); // GET $ getTicketUrl = jsapi_ticket "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=" $ tokenContentObj-> "タイプ=&JSAPIの。" access_tokenは。; $ TicketContent =のfile_get_contents ($ getTicketUrl ); $ = json_decodeのticketContentObj($ ticketContent ); $データ[ 'access_tokenは'] = $ tokenContentObj-> access_tokenは、$データ[ 'jsapi_ticket'] = $ ticketContentObj-> チケット; $データ[ 'ADD_TIME'] = DATE( 'はYmd H:I:S' ); //情報D( 'wechat_share_info')を追加します- >追加($データ); jsapi_ticket = $ $ ticketContentObj-> チケット;} //取得した情報であれば、情報ではありませんIF他の利用について、情報を期限切れ($シェア[ 'jsapi_ticket'] &&時間() - (のstrtotimeシェア$ [ 'ADD_TIME'])<* 3600 2 )= $ {$のjsapi_ticketシェア[ 'jsapi_ticket' ];} //情報が古くなっている場合、それは他の更新{//获取access_tokenは$ getTokenUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" .C( 'WEI_SHARE_APPID')。 "&秘密=" .C( 'WEI_APP_SECERT' ); $ tokenContent =のfile_get_contents($ getTokenUrl )。$ tokenContentObj = json_decode($ tokenContent )。。。//获取jsapi_ticket $ getTicketUrl = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=" $ tokenContentObj-> access_tokenは"&タイプ= JSAPI" ; $ ticketContent =のfile_get_contents($ getTicketUrl )。$ ticketContentObj = json_decode($ ticketContent )。$データ[ 'access_tokenは'] = $ tokenContentObj-> access_tokenは、$データ[ 'jsapi_ticket'] = $ ticketContentObj-> チケット。$データ[ 'add_time'] =日付( 'はYmd H:I:S' );); $ jsapi_ticket = $ ticketContentObj-> チケット。} $ noncestr = SUBSTR(MD5(日付( 'はYmd H:I:S')時間())、0,16 )。$タイムスタンプ=時間(); 。$ stringSign = "jsapi_ticket =" $のjsapi_ticket "&noncestr =" noncestr $ $タイムスタンプを"=タンピング×" "&URL =" $ PAGEURL ""。。。。。。。 。//エコー$ stringSign。//组装返回结果、供前端使用$署名= SHA1($ stringSign )。$ RES [ '署名'] = $署名。$のres [ 'noncestr'] = $ noncestr 。$のres [ 'タイムスタンプ'] = $タイムスタンプ。エコーjson_encode($ RES )。}
コア3 JS-APIのシェアは、構成設定のアイコンのフロントページは、ページの下部に次のコードを、imgUrlカスタムアイコン、あなたがこの位置に設定したいアイコンを配置、達成されるであろう。
<! -マイクロチャネルの共有を設定する- >
<スクリプトタイプ= "テキスト/ JavaScriptを" SRC = "http://res.wx.qq.com/open/js/jweixin-1.0.0.js"> </ SCRIPT >
<スクリプトタイプ= "テキスト/ JavaScriptを">
のvarのタイムスタンプ; //タイムスタンプ
のvar noncestr; //ランダムな文字列の
VaRの署名; //署名
VAR PAGEURL = window.location.href;
VAR conUrl location.href.split =( '#')[0 ];
$アヤックス({
URL: "{:U-( 'getWinChatShareSignature')}" 、
データ:{
URL:conUrl
}、
データ型: 'JSON' 、 非同期:同期するように設定//、falseにスレッドの遅延を避けるために取得、 メソッド,:「POST」、 成功を:機能(データ){//データセットのタイムスタンプ=data.timestamp; noncestr = data.noncestr;シグネチャー= data.signature;}}); //共有初期設定({デバッグwx.config:falseに、AppIDのため: 'wx63e1ae0f43d8825c' 、タイムスタンプ:タイムスタンプ、nonceStr:noncestr、署名:署名、jsApiList:[ "onMenuShareTimeline"、 "onMenuShareAppMessage"、 "onMenuShareQQ"、 "onMenuShareWeibo"、 "onMenuShareQZone" ]}); //インターネット共有構成wx.ready(関数(){wx.onMenuShareTimeline({タイトル:「タイトルPAGEURL、//共有リンクimgUrl: "のhttp://" +」、タイトルリンク共有// window.location.host + "/Public/sharelogo.png"、// 機能:共有アイコン成功」((){アラート共有成功「!);}、キャンセル:関数(){//ユーザーが共有した後に実行するコールバック関数をキャンセル}}); Wx.onMenuShareAppMessage({タイトル : 'タイトル'、// 共有タイトルDESC 'DESC'、//共有説明リンク:PAGEURL、//共有リンクimgUrl: "HTTP://" + window.locationの。 ホスト+「/公共/ sharelogo.png」 、// アイコンのシェアタイプ:「」、//株式の種類、音楽、ビデオ、またはリンク、dataUrlをリンクするためのデフォルト値を記入しない:「」、//タイプは、音楽やビデオの場合は、その後、機能:データリンクを提供するために、デフォルトでは成功空である(){//ユーザが共有するために、コールバック関数の実行を確認する}、キャンセル:関数(){//ユーザが共有するために、コールバック関数の実行をキャンセル}}); wx.onMenuShareQQ( {タイトル: 'タイトル'、//シェアタイトルDESC 'DESC'、//共有説明リンク:PAGEURL、//共有リンクimgUrl: "のhttp://" + window.location.host +「/Public/sharelogo.png 「//共有アイコン成功:関数(){//共有を確認するために、ユーザによって実行されるコールバック関数}、キャンセル:関数ユーザが共有を解除するとき(){//コールバック関数を実行します}}); Wx.onMenuShareWeibo({タイトル : 'タイトル'、// 共有タイトルDESC 'DESC'、//共有説明リンク:PAGEURL、//共有リンクimgUrl: "HTTP://" + window.locationの。 ホスト+「/パブリック/ sharelogo.png」 、// 共有アイコン成功:関数(){//ユーザが共有するために、コールバック関数の実行を確認する}、キャンセル:関数(){//ユーザが共有するために、コールバック関数の実行をキャンセル}} ); wx.onMenuShareQZone({タイトル: 'タイトル'、// 共有タイトルDESC 'DESC'、//共有説明リンク:PAGEURL、//共有リンクimgUrl: "のhttp://" + window.location.host +」 /Public/sharelogo.png」、//共有アイコン成功:関数(){//ユーザが共有するために、コールバック関数の実行を確認する}、キャンセル:関数(){//ユーザが共有するために、コールバック関数の実行をキャンセル}を})。 }); </ SCRIPT>
4. [開くページに対応する表面下のフロントエンドのコードを、効果でそれを見て、友人や他のプラットフォームのサークルを共有するために、右上隅をクリックしてください!
参考リンク:httpsの:? //Mp.weixin.qq.com/wikiトン=リソース/ res_main&ID = mp1421141115
マイクロチャネル公共番号から:プログラミング協会
高度なプログラマ毎日本は、注意してください!