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

目錄
一、準備,設置js接口安全域名
?二、前端配置
三、生成簽名
1.access_token?
2.獲取jsapi_ticket
3.簽名
四、小結(jié)
首頁 微信小程序 微信開發(fā) 微信分享功能的開發(fā)

微信分享功能的開發(fā)

Mar 16, 2018 pm 02:28 PM
分享 功能 開發(fā)

這次給大家?guī)砦⑿欧窒砉δ艿拈_發(fā),微信分享功能開發(fā)的注意事項有哪些,下面就是實戰(zhàn)案例,一起來看一下。

內(nèi)嵌在微信中的網(wǎng)頁,右上角都會有一個默認的分享功能。如下圖所示,第一個為自定義的效果,第二個為默認的效果。實現(xiàn)了自定義的分享鏈接是不是更讓人有點擊的欲望?下面講解下開發(fā)的過程。

一、準備,設置js接口安全域名

這需要使用微信的jssdk,先需要在微信公眾號后臺進行設置:公眾號設置-->功能設置-->JS接口安全域名。打開這個頁面之后你會看到下面的提示。需要先下載這個文件并上傳到指定域名的根目錄。

這個文件里面是一個字符串,從名稱看是用來校驗用的。先上傳了這個文件,你才能保存成功。這樣你就可以使用jssdk了。

?二、前端配置

?首先要說明的是分享功能是一個配置功能,綁定在按鈕的click事件中是沒有效果的。也就是說只有點擊右上角的分享才有效果(有的文字內(nèi)容分享不知道是怎么實現(xiàn)的)。官方的js有四個步驟,首先是引入jssdk:

<script src="http://res.wx.qq.com/open/js/jweixin-1.1.0.js"></script>

根據(jù)官方的配置參數(shù),我們可以定義一個WXShareModel對象:

???public?class?WXShareModel
????{????????public?string?appId?{?get;?set;?}????????public?string?nonceStr?{?get;?set;?}????????public?long?timestamp?{?get;?set;?}????????public?string?signature?{?get;?set;?}????????public?string?ticket?{?get;?set;?}????????public?string?url?{?get;?set;?}????????public?void?MakeSign()
????????{?????????????var?string1Builder?=?new?StringBuilder();
?????????????string1Builder.Append("jsapi_ticket=").Append(ticket).Append("&")
??????????????????????????.Append("noncestr=").Append(nonceStr).Append("&")
??????????????????????????.Append("timestamp=").Append(timestamp).Append("&")
??????????????????????????.Append("url=").Append(url.IndexOf("#")?>=?0???url.Substring(0,?url.IndexOf("#"))?:?url);????????????var?string1?=?string1Builder.ToString();
????????????signature?=?Util.Sha1(string1,?Encoding.Default);
????????}
????}

然后是進行配置:

wx.config({
????????debug:?true,?//?開啟調(diào)試模式,調(diào)用的所有api的返回值會在客戶端alert出來,若要查看傳入的參數(shù),可以在pc端打開,參數(shù)信息會通過log打出,僅在pc端時才會打印。
????????appId:?'@Model.appId',?//?必填,公眾號的唯一標識
????????timestamp:?'@Model.timestamp',?//?必填,生成簽名的時間戳
????????nonceStr:?'@Model.nonceStr',?//?必填,生成簽名的隨機串
????????signature:?'@Model.signature',//?必填,簽名,見附錄1
????????jsApiList:?["checkJsApi",?"onMenuShareTimeline",?"onMenuShareAppMessage",?"onMenuShareQQ",?"onMenuShareQZone"]?//?必填,需要使用的JS接口列表,所有JS接口列表見附錄2????});
????wx.ready(function?()?{
????????document.querySelector('#checkJsApi').onclick?=?function?()?{
????????????wx.checkJsApi({
????????????????jsApiList:?[????????????'getNetworkType',????????????'previewImage'
????????????????],
????????????????success:?function?(res)?{
????????????????????alert(JSON.stringify(res));
????????????????}
????????????});
????????};
    //朋友圈????????wx.onMenuShareTimeline({
????????????title:?'暖木科技',?//?分享標題
????????????link:?'http://www.warmwood.com/home/lampindex',?//?分享鏈接
????????????imgUrl:?'http://www.warmwood.com/images/s1.jpg',
????????????success:?function?(res)?{
????????????????alert('已分享');
????????????},
????????????cancel:?function?(res)?{
????????????????alert('已取消');
????????????},
????????????fail:?function?(res)?{
????????????????alert(JSON.stringify(res));
????????????}
????????});????????//朋友????????wx.onMenuShareAppMessage({
????????????title:?'暖木科技',?//?分享標題
????????????desc:?'寶寶的睡眠很重要,你的睡眠也很重要',?//?分享描述
????????????link:?'http://www.warmwood.com/home/lampindex',?//?分享鏈接
????????????imgUrl:?'http://www.warmwood.com/images/s1.jpg',?//?分享圖標
????????????type:?'',?//?分享類型,music、video或link,不填默認為link
????????????dataUrl:?'',?//?如果type是music或video,則要提供數(shù)據(jù)鏈接,默認為空
????????????success:?function?()?{????????????????//?用戶確認分享后執(zhí)行的回調(diào)函數(shù)
????????????????alert("分享");
????????????},
????????????cancel:?function?()?{????????????????//?用戶取消分享后執(zhí)行的回調(diào)函數(shù)
????????????????alert("取消分享");
????????????}
????????});
????});

然后剩下就是后端的事情了。后端的關(guān)鍵是獲取access_token和jsapi_ticket以及生成正確的簽名。另外如果要統(tǒng)計分享的數(shù)量,最好就是在success方法中進行統(tǒng)計了。

三、生成簽名

1.access_token?

獲取access_token方法全平臺都是一致的。

public?const?string?AccessTokenUrl?=?"https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}";
?public?TokenResult?GetAccessToken()
????????{????????????var?url?=?string.Format(WxDeviceConfig.AccessTokenUrl,?WxDeviceConfig.AppId,?WxDeviceConfig.APPSECRET);????????????var?res?=?SendHelp.Send<TokenResult>(null,?url,?null,?CommonJsonSendType.GET);????????????return?res;
????????}

access_token的超時時間是7200秒,所以先可以緩存起來。SendHelp文章末尾可下載

2.獲取jsapi_ticket

access_token的作用就是為了獲取jsapi_ticket。用get方式獲取,url:https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=jsapi,返回的JSON對象如下。

{"errcode":0,"errmsg":"ok","ticket":"bxLdikRXVbTPdHSM05e5u5sUoXNKd8-41ZO3MhKoyN5OfkWITDGgnr2fwJ0m9E8NYzWKVZvdVtaUgWvsdshFKA","expires_in":7200}

所以可以定義一個模型:

public?class?jsapiTicketModel
????{????????public?string?errcode?{?get;?set;?}????????public?string?errmsg?{?get;?set;?}????????public?string?ticket?{?get;?set;?}????????public?string?expires_in?{?get;?set;?}
????}

再完成獲取ticket的方法:

?public?jsapiTicketModel?GetJsApiTicket(string?accessToken)
????????{????????????var?url?=?string.Format(WxPayConfig.Jsapi_ticketUrl,?accessToken);????????????return?SendHelp.Send<jsapiTicketModel>(accessToken,?url,?"",?CommonJsonSendType.GET);
????????}

ticket過期時間也是7200秒,并且不能頻繁的請求,所以也需要再服務端緩存起來。

?private?void?setCacheTicket(string?cache)
????????{
????????????_cacheManager.Set(tokenKey,?cache,?7200);
????????}

MemoryCacheManager:

View Code

3.簽名

終于到這一步了,然后你在文檔中看到讓你失望的一幕:

么有C#的demo,支付那邊都提供了,為啥jssdk沒有提供,好吧先不吐槽了。官方也說明白簽名的規(guī)則。一開始我使用的是https://github.com/night-king/weixinSDK中的簽名:

?public?static?string?Sha1(string?orgStr,?string?encode?=?"UTF-8")
????????{????????????var?sha1?=?new?SHA1Managed();????????????var?sha1bytes?=?System.Text.Encoding.GetEncoding(encode).GetBytes(orgStr);????????????byte[]?resultHash?=?sha1.ComputeHash(sha1bytes);????????????string?sha1String?=?BitConverter.ToString(resultHash).ToLower();
????????????sha1String?=?sha1String.Replace("-",?"");????????????return?sha1String;
????????}//錯誤示例

得出的結(jié)果和官方校驗的不一致,一直提示簽名錯誤。

?

?正確的寫法是:

public?static?string?Sha1(string?orgStr,?Encoding?encode)
????????{
????????????SHA1?sha1?=?new?SHA1CryptoServiceProvider();????????????byte[]?bytes_in?=?encode.GetBytes(orgStr);????????????byte[]?bytes_out?=?sha1.ComputeHash(bytes_in);
????????????sha1.Dispose();????????????string?result?=?BitConverter.ToString(bytes_out);
????????????result?=?result.Replace("-",?"");????????????return?result;??
????????}

和官方校驗的結(jié)果一直后,就ok了(忽略大小寫)。另外一個需要注意的地方是簽名中的url。如果頁面有參數(shù),model中的url也需要帶參數(shù),#號后面的不要。不然也是會報簽名錯誤。

?public?ActionResult?H5Share()
????????{????????????var?model?=?new?WXShareModel();
????????????model.appId?=?WxPayConfig.APPID;
????????????model.nonceStr?=?WxPayApi.GenerateNonceStr();
????????????model.timestamp?=?Util.CreateTimestamp();
????????????model.ticket?=?GetTicket();
????????????model.url?=?"http://www.warmwood.com/AuthWeiXin/share";//?domain?+?Request.Url.PathAndQuery;????????????model.MakeSign();
????????????Logger.Debug("獲取到ticket:"?+?model.ticket);
????????????Logger.Debug("獲取到簽名:"?+?model.signature);????????????return?View(model);
????????}

四、小結(jié)

wx.config中的debug為true會alert各種操作結(jié)果。參數(shù)正確之后界面會提示:

?

至此,分享的功能就ok了。也就打開了調(diào)用其他jssdk的大門。另外文中的SendHelp對象是用的Senparc?(基于.net4.5)的dll。

相信看了本文案例你已經(jīng)掌握了方法,更多精彩請關(guān)注php中文網(wǎng)其它相關(guān)文章!

推薦閱讀:

webpack自動刷新與解析的使用

H5的緩存Manifest的使用

以上是微信分享功能的開發(fā)的詳細內(nèi)容。更多信息請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻,版權(quán)歸原作者所有,本站不承擔相應法律責任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動的應用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機

Video Face Swap

Video Face Swap

使用我們完全免費的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級代碼編輯軟件(SublimeText3)

熱門話題

Laravel 教程
1600
29
PHP教程
1502
276
四款值得推薦的AI輔助編程工具 四款值得推薦的AI輔助編程工具 Apr 22, 2024 pm 05:34 PM

這個AI輔助編程工具在這個AI迅速發(fā)展的階段,挖掘出了一大批好用的AI輔助編程工具。AI輔助編程工具能夠提高開發(fā)效率、改善代碼質(zhì)量、降低bug率,是現(xiàn)代軟件開發(fā)過程中的重要助手。今天大姚給大家分享4款AI輔助編程工具(并且都支持C#語言),希望對大家有所幫助。https://github.com/YSGStudyHards/DotNetGuide1.GitHubCopilotGitHubCopilot是一款AI編碼助手,可幫助你更快、更省力地編寫代碼,從而將更多精力集中在問題解決和協(xié)作上。Git

自媒體到底是什么?它的主要特點和功能有哪些? 自媒體到底是什么?它的主要特點和功能有哪些? Mar 21, 2024 pm 08:21 PM

隨著互聯(lián)網(wǎng)的快速發(fā)展,自媒體這個概念已經(jīng)深入人心。那么,自媒體到底是什么?它有哪些主要特點和功能呢?接下來,我們將一一探討這些問題。一、自媒體到底是什么?自媒體,顧名思義,就是自己就是媒體。它是指通過互聯(lián)網(wǎng)平臺,個人或者團隊可以自主創(chuàng)建、編輯、發(fā)布和傳播內(nèi)容的信息載體。不同于傳統(tǒng)媒體,如報紙、電視、電臺等,自媒體具有更強的互動性和個性化,讓每個人都能成為信息的生產(chǎn)者和傳播者。二、自媒體的主要特點和功能有哪些?1.低門檻:自媒體的崛起降低了進入媒體行業(yè)的門檻,不再需要繁瑣的設備和專業(yè)的團隊,一部手

vivox100s和x100區(qū)別:性能對比及功能解析 vivox100s和x100區(qū)別:性能對比及功能解析 Mar 23, 2024 pm 10:27 PM

vivox100s和x100手機都是vivo手機產(chǎn)品線中的代表機型,它們分別代表了vivo在不同時間段內(nèi)的高端技術(shù)水平,因此這兩款手機在設計、性能和功能上均有一定區(qū)別。本文將從性能對比和功能解析兩個方面對這兩款手機進行詳細比較,幫助消費者更好地選擇適合自己的手機。首先,我們來看vivox100s和x100在性能方面的對比。vivox100s搭載了最新的

網(wǎng)易云音樂怎么分享到微信朋友圈_網(wǎng)易云音樂分享到微信朋友圈教程 網(wǎng)易云音樂怎么分享到微信朋友圈_網(wǎng)易云音樂分享到微信朋友圈教程 Mar 25, 2024 am 11:41 AM

1、首先我們進入到網(wǎng)易云音樂中,然后在軟件首頁界面中,點擊進入到歌曲的播放界面中。2、然后在歌曲播放界面中,找到右上方的分享功能按鈕,如下圖紅框所示位置,點擊選擇分享的渠道;在分享渠道中,點擊底部的“分享至”選項,然后選擇第一個“微信朋友圈”,即可將內(nèi)容分享至微信朋友圈。

AI程序員哪家強?探索Devin、通義靈碼和SWE-agent的潛力 AI程序員哪家強?探索Devin、通義靈碼和SWE-agent的潛力 Apr 07, 2024 am 09:10 AM

2022年3月3日,距世界首個AI程序員Devin誕生不足一個月,普林斯頓大學的NLP團隊開發(fā)了一個開源AI程序員SWE-agent。它利用GPT-4模型在GitHub存儲庫中自動解決問題。SWE-agent在SWE-bench測試集上的表現(xiàn)與Devin相似,平均耗時93秒,解決了12.29%的問題。SWE-agent通過與專用終端交互,可以打開、搜索文件內(nèi)容,使用自動語法檢查、編輯特定行,以及編寫和執(zhí)行測試。(注:以上內(nèi)容為原內(nèi)容微調(diào),但保留了原文中的關(guān)鍵信息,未超過指定字數(shù)限制。)SWE-A

學習如何利用Go語言開發(fā)移動應用程序 學習如何利用Go語言開發(fā)移動應用程序 Mar 28, 2024 pm 10:00 PM

Go語言開發(fā)移動應用程序教程隨著移動應用市場的不斷蓬勃發(fā)展,越來越多的開發(fā)者開始探索如何利用Go語言開發(fā)移動應用程序。作為一種簡潔高效的編程語言,Go語言在移動應用開發(fā)中也展現(xiàn)出了強大的潛力。本文將詳細介紹如何利用Go語言開發(fā)移動應用程序,并附上具體的代碼示例,幫助讀者快速入門并開始開發(fā)自己的移動應用。一、準備工作在開始之前,我們需要準備好開發(fā)環(huán)境和工具。首

百度網(wǎng)盤怎么分享文件給好友 百度網(wǎng)盤怎么分享文件給好友 Mar 25, 2024 pm 06:52 PM

近期,百度網(wǎng)盤安卓客戶端迎來了全新的8.0.0版本,這一版本不僅帶來了眾多變化,還增添了諸多實用功能。其中,最為引人注目的便是文件夾共享功能的增強?,F(xiàn)在,用戶可以輕松邀請好友加入,共同分享工作和生活中的重要文件,實現(xiàn)更加便捷的協(xié)作與共享。那么究竟該如何分享給好友自己需要分享的文件呢,下文中本站小編就將為大家?guī)碓敿殐?nèi)容介紹,希望能幫助到大家!1)打開百度云APP,首先點擊在首頁中選擇相關(guān)的文件夾,然后再點擊界面右上角的【...】圖標;(如下圖)2)隨后點擊“共享成員”一欄中的【+】,最后在勾選所

小紅書賬號管理軟件有哪些功能?怎么經(jīng)營小紅書賬號? 小紅書賬號管理軟件有哪些功能?怎么經(jīng)營小紅書賬號? Mar 21, 2024 pm 04:16 PM

隨著小紅書在年輕人中的流行,越來越多的人開始利用這一平臺分享各方面的經(jīng)驗和生活見解。如何有效管理多個小紅書賬號成為一個關(guān)鍵問題。在本文中,我們將討論一些小紅書賬號管理軟件的功能,并探討如何更好地經(jīng)營小紅書賬號。隨著社交媒體的發(fā)展,許多人發(fā)現(xiàn)自己需要管理多個社交賬號。對于小紅書用戶來說,這也是一個挑戰(zhàn)。一些小紅書賬號管理軟件可以幫助用戶更輕松地管理多個賬號,包括自動發(fā)布內(nèi)容、定時發(fā)布、數(shù)據(jù)分析等功能。通過這些工具,用戶可以更高效地管理他們的賬號,提高賬號的曝光率和關(guān)注度。另一、小紅書賬號管理軟件有

See all articles