


Benutzerdefinierter Titel, Link, Beschreibung der H5-Seite, Weitergabe von Bildern an WeChat-Freunde, Momente, QQ und QQ-Bereich
May 07, 2020 pm 02:52 PMKürzlich bin ich bei der Arbeit auf eine Funktion gesto?en, die erfordert, dass wir die H5-Seite auf unserem Mobiltelefon anpassen, um sie mit WeChat-Freunden, Moments, QQ und dem QQ-Bereich zu teilen.
Das Folgende ist eine Methode, die ich von Baidu erhalten und selbst getestet habe. Ich werde sie mit allen teilen, damit wir voneinander lernen k?nnen.
Implementierungsprinzip: Die benutzerdefinierte Freigabe von H5 erfordert die Verwendung der Freigabeschnittstelle der ?ffentlichen WeChat-Plattform, die das JSSDK in der WeChat-Webentwicklung ist, [spezifische Dokumentation: https://developers.weixin. qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html】Verwenden Sie die Freigabeschnittstelle im SDK von WeChat, wie unten gezeigt:
Hinweis: Die unten stehende benutzerdefinierte Freigabefunktion kann nur im integrierten Browser von WeChat geteilt werden; in anderen Browsern ist sie nicht verfügbar.
# 1. Registrieren Sie ein ?ffentliches WeChat-Konto
Zuerst müssen wir ein ?ffentliches WeChat-Konto er?ffnen Konto oder ein pers?nliches Konto Es gibt keine Sharing-Schnittstellenfunktion.
# 2. Berechtigungen aktivieren
Nachdem die Registrierung unseres offiziellen Kontos abgeschlossen ist, müssen wir uns bei der ?ffentlichen WeChat-Plattform anmelden, zu den Entwicklungsschnittstellenberechtigungen gehen und die Berechtigungen für aktivieren Die Freigabeschnittstelle [Zum ?ffnen von Berechtigungen für Unternehmens- und Zahlungszertifizierung ist eine Authentifizierung erforderlich] zeigt das folgende Bild die zertifizierte Situation:
# 3. Nach der Schnittstellenberechtigung ist aktiviert, müssen wir einen sicheren JS-Schnittstellen-Dom?nennamen für das offizielle Konto festlegen
Melden Sie sich bei der ?ffentlichen WeChat-Plattform an, gehen Sie zu Einstellungen -> ?ffentliche Kontoeinstellungen -> Funktionseinstellungen und geben Sie die gültige JS-Schnittstellensicherheit ein Dom?nenname [Ihr Projektzugriffsdom?nenname], wie in der folgenden Abbildung dargestellt:
# 4. Nachdem der sichere Dom?nenname erfolgreich ausgefüllt wurde, müssen Sie einen konfigurieren IP-Whitelist
Klicken Sie auf Entwicklung->Grundeinstellungen->IP-Whitelist, um eine Server-IP [Ihre IP-Adresse des Servers, auf dem sich das Projekt befindet] einzugeben. Die spezifischen Gründe werden unten aufgeführt, wie in gezeigt Die Abbildung unten:
# 5. Alle oben genannten Funktionen müssen im ?ffentlichen Konto konfiguriert werden. Abgeschlossen, beginnen wir mit der Integration der Schnittstelle in das spezifische Projekt
## (1) Führen Sie die JS-Datei ein
Fügen Sie die folgende JS-Datei auf der Seite ein, die die JS-Schnittstelle aufrufen muss (Unterstützung https): http://res. wx.qq.com/open/js/jweixin-1.4.0.js
Wenn Sie die Dienststabilit?t weiter verbessern müssen und die oben genannten Ressourcen nicht verfügbar sind, k?nnen Sie den Besuch ?ndern: http://res2 .wx.qq.com/open/js/jweixin-1.4.0.js (unterstützt https)
## (2) Injizieren Sie die Berechtigungsüberprüfung über die Konfigurationsschnittstelle. Konfiguration
Alle Seiten, die JS-SDK verwenden müssen, müssen zuerst Konfigurationsinformationen einfügen, sonst k?nnen sie nicht aufgerufen werden
wx.config({ debug: true, // 開啟調(diào)試模式,調(diào)用的所有api的返回值會在客戶端alert出來,若要查看傳入的參數(shù),可以在pc端打開,參數(shù)信息會通過log打出,僅在pc端時才會打印。 appId: '', // 必填,公眾號的唯一標識 timestamp: , // 必填,生成簽名的時間戳 nonceStr: '', // 必填,生成簽名的隨機串 signature: '',// 必填,簽名 jsApiList: [] // 必填,需要使用的JS接口列表 });
Zu den oben genannten Parametern für die Berechtigungsüberprüfung geh?rt
1. ?appId“ ist die eindeutige Identifikation des offiziellen Kontos, die auf der ?ffentlichen WeChat-Plattform abgerufen werden kann
2. ?Zeitstempel“, Zeitstempel
3. ?nonceStr“, zuf?llige Zeichenfolge, [L?nge sollte 32 Zeichen nicht überschreiten]
4. ?signature“, Signatur (muss Parameter verbinden und dann verschlüsseln)
5.jsApiList ist eine Liste von JS-Schnittstellen wie folgt: Bild: [Link: https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html#62]
(3) Signatur ?Signatur“ generieren [ein komplizierterer Ort]
a mehrere Parameter, und dann werden die Parameter zu einer Zeichenfolge verkettet und dann mit sha1() verschlüsselt.
Die Parameter sind: noncestr: zuf?llige Zeichenfolge [Dies muss mit der zuf?lligen Zeichenfolge bei der Berechtigungsüberprüfung konsistent sein]
jsapi_ticket: jsapi_ticket ist ein tempor?res Ticket, das von ?ffentlichen Konten zum Aufrufen der WeChat JS-Schnittstelle verwendet wird. Unter normalen Umst?nden ist das jsapi_ticket 7200 Sekunden lang gültig und wird über access_token abgerufen.
Zeitstempel: Zeitstempel [Dieser Zeitstempel muss auch mit dem Zeitstempel bei der Berechtigungsüberprüfung übereinstimmen, die Einheit ist Sekunden]
URL: Die URL der aktuellen Webseite, ausgenommen # und die folgenden Zeichen
Verketten Sie dann alle Parameter zu einer Zeichenfolge , zum Beispiel:
jsapi_ticket=sM4AOVdWfPE4DxkXGEs8VMCPGGVi4C3VM0P37wVUCFvkVAy_90u5h9nbSlYy3-Sl-HhTdfl2fzFy1AOcHKP7qg&noncestr=Wm3WZYTPz0wzccnW×tamp=1414587457&url=http://mp.weixin.qq.com?params=value
然后對上面的字符串進行加密【sha1()函數(shù)進行加密】,得到signature。
b.現(xiàn)在來說說怎樣獲得調(diào)用微信調(diào)用JS接口的臨時票據(jù)jsapi_ticke
因為jsapi_ticket的有效期為7200秒,并且需要通過access_token來獲取到,所以我們先獲取access_token;access_token公眾號的一天獲取次數(shù)有限,2000次,且有效時間為7200秒,所以我們可以考慮每次獲取到的access_token放入緩存或者讓數(shù)據(jù)表中,在有效期內(nèi)反復(fù)調(diào)用【我是存儲到數(shù)據(jù)表中的】。
下面是我自己寫的一個簡單類和數(shù)據(jù)表結(jié)構(gòu)
class Wxapi{ protected $appid; protected $appsecret; /** * 構(gòu)造函數(shù) * 2019-12-10 */ public function __construct($appid,$appsecret){ $this->appid=$appid; $this->appsecret=$appsecret; $this->sessionKey_url="https://api.weixin.qq.com/sns/jscode2session"; $this->accessToken_url="https://api.weixin.qq.com/cgi-bin/token"; $this->jsapi_ticket_url="https://api.weixin.qq.com/cgi-bin/ticket/getticket"; $this->qrcodeUrl="https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode"; } /** * 獲取access_token * 2019-12-10 * * @param string appid appid * @param string appsecret appsecret * @param string tableName 表名(wx_account) * @return string token token */ public function getToken($appid,$appsecret,$tableName){ $accountInfo = DB::table($tableName)->where('appid',$appid)->where('appsecret',$appsecret)->first(); $now_time = time();//當(dāng)前時間戳 if(empty($accountInfo)){ return false; } if($now_time-$accountInfo->access_token_time<7000){ $token = $accountInfo->access_token; return $token; }else{ $get_token_url = $this->accessToken_url."?grant_type=client_credential&appid=".$appid.'&secret='.$appsecret; $getToken_json = curl_get($get_token_url); $getToken_arr = json_decode($getToken_json['output'],true); $token = $getToken_arr['access_token']; $arr = [ 'access_token_time'=>time(), 'access_token'=>$token, 'updated_at'=>date('Y-m-d H:i:s',time()) ]; $res = DB::table($tableName)->where('appid',$appid)->where('appsecret',$appsecret)->update($arr); if($res){ return $token; }else{ return false; } } } /** * 獲取jssdk-ticket * 2019-12-10 * * @param string appid appid * @param string appsecret appsecret * @param string tableName 表名(wx_account) * @return string token token */ public function getJssdkTicket($appid,$appsecret,$tableName){ $accountInfo = DB::table($tableName)->where('appid',$appid)->where('appsecret',$appsecret)->first(); if(empty($accountInfo)){ return false; } $now_time = time();//當(dāng)前時間戳 if($now_time-$accountInfo->jsapi_ticket_time<7000){ $jsapi_ticket = $accountInfo->jsapi_ticket; return $jsapi_ticket; }else{ $access_token=$this->getToken($appid,$appsecret,$tableName); if(!$access_token){ return false; } $get_jsapi_ticket_url = $this->jsapi_ticket_url."?access_token=".$access_token."&type=jsapi"; $getJssdkTicket_json = curl_get($get_jsapi_ticket_url); $getJssdkTicket_arr = json_decode($getJssdkTicket_json['output'],true); $jsapi_ticket = $getJssdkTicket_arr['ticket']; $arr = [ 'jsapi_ticket_time'=>time(), 'jsapi_ticket'=>$jsapi_ticket, 'updated_at'=>date('Y-m-d H:i:s',time()) ]; $res = DB::table($tableName)->where('appid',$appid)->where('appsecret',$appsecret)->update($arr); if($res){ return $jsapi_ticket; }else{ return false; } } } }
這邊我們的操作是,我們后端獲取jsapi_ticket返回給前端,然后前端進行權(quán)限驗證。
為了方便調(diào)試,我們可以在微信開發(fā)者工具中進行調(diào)試。下載鏈接:https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html
當(dāng)頁面去調(diào)用微信的JSSDK接口時,成功可以看到對應(yīng)的微信返回數(shù)據(jù)。
如果出現(xiàn)錯誤,請根據(jù)開發(fā)文檔進行修改:
然后在手機上進行分享,測試是否成功;下面是我成功的操作。
朋友圈分享:
微信群組分享:
QQ分享:
Das obige ist der detaillierte Inhalt vonBenutzerdefinierter Titel, Link, Beschreibung der H5-Seite, Weitergabe von Bildern an WeChat-Freunde, Momente, QQ und QQ-Bereich. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

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

Hei?er Artikel

Hei?e Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

H5 bezieht sich auf HTML5, die neueste Version von HTML. H5 ist eine leistungsstarke Auszeichnungssprache, die Entwicklern mehr Auswahlm?glichkeiten und kreativen Raum bietet. Ihr Aufkommen f?rdert die Entwicklung der Web-Technologie und macht die Interaktion und Wirkung von Webseiten noch besser Wenn es allm?hlich reift und popul?r wird, glaube ich, dass es in der Internetwelt eine immer wichtigere Rolle spielen wird.

Dieser Artikel hilft Ihnen dabei, schnell zwischen H5, WEB-Front-End, gro?em Front-End und WEB-Full-Stack zu unterscheiden. Ich hoffe, er wird Freunden in Not helfen!

H5REFERSTOHTML5, ApivotaltechnologyInwebdevelopment.1) HTML5IntroducesNewelementsandapisrich, Dynamicwebapplications.2) ITSUPP ortsmultimediaWitHoutPlugins, BETHINGINGUSEREXPERICERCROSSDEVICES.3) SEMANTICELEMENTSIMPROVEPENTENTENTENTRUCTENTRUCTELUREANDSEO.4) H5'SRespo

Webstandards und -technologien haben sich bisher aus HTML4, CSS2 und einfachem JavaScript entwickelt und haben erhebliche Entwicklungen erfahren. 1) HTML5 führt APIs wie Leinwand und Webstorage ein, die die Komplexit?t und Interaktivit?t von Webanwendungen verbessern. 2) CSS3 fügt Animations- und übergangsfunktionen hinzu, um die Seite effektiver zu gestalten. 3) JavaScript verbessert die Entwicklungseffizienz und die Lesbarkeit der Code durch moderne Syntax von Node.js und ES6, wie z. B. Pfeilfunktionen und Klassen. Diese ?nderungen haben die Entwicklung von Leistungsoptimierung und Best Practices von Webanwendungen gef?rdert.

Implementierungsschritte: 1. überwachen Sie das Scroll-Ereignis der Seite. 2. Stellen Sie fest, ob die Seite nach unten gescrollt wurde. 3. Laden Sie die n?chste Seite mit Daten. 4. Aktualisieren Sie die Scroll-Position der Seite.

H5 verbessert die Erfahrung des Webbenutzers mit Multimedia -Support, Offline -Speicher und Leistungsoptimierung. 1) Multimedia -Unterstützung: H5 und Elemente vereinfachen die Entwicklung und verbessern die Benutzererfahrung. 2) Offline -Speicher: Webstorage und IndexedDB erm?glichen die Verst?rkung der Erfahrung offline. 3) Leistungsoptimierung: Webworker und Elemente optimieren die Leistung, um den Bandbreitenverbrauch zu verringern.

H5 verbessert die Zug?nglichkeits- und SEO -Effekte der Webseiten durch semantische Elemente und Aria -Attribute. 1. Verwendung usw., um die Inhaltsstruktur zu organisieren und SEO zu verbessern. 2. ARIA-Attribute wie ARIA-Label verbessern die Zug?nglichkeit, und assistive Technologie-Benutzer k?nnen Webseiten reibungslos verwenden.

In H5 k?nnen Sie das Positionsattribut verwenden, um die Positionierung von Elementen über CSS zu steuern: 1. Relative Positionierung, die Syntax lautet ?style="position: relative;"; 2. Absolute Positionierung, die Syntax lautet ?style="position: absolute;“ ?; 3. Feste Positionierung, die Syntax lautet ?style="position: Fixed;" und so weiter.
