頁面錯誤!請稍后再試_微信內嵌H5頁面授權和分享

近期新上線項目,用到了微信授權獲取用戶信息和分享,掉坑無數次,遂寫此篇,為后人指路

項目情況

技術選型

  • 項目語言:HTML、CSS、JavaScript
  • 項目框架:Vue.js
  • 項目搭建腳手架:vue-cli
  • 工程化工具:webpack、Npm
  • 源碼管理:gitlab
  • 運行環境:WeChatBrowser
  • 第三方服務:微信JS-SDK

項目需求

  • 微信授權獲取用戶信息
  • 微信分享統計
  • 提交表單攜帶微信部分信息
以下技術實現方式和方案都是基于公眾號已分配相關授權和權限的情況下,具體授權和權限申請請查看微信官方文檔,此處不做贅述

微信授權(基于公眾號的授權方案)

  • 目前網上大多分為兩種方式去獲取微信授權,一種是前端主導的微信授權,一種是server端主導的微信授權,兩種方式實現的結果是一樣的,具體采用何種方式可以根據自己項目情況去選擇

授權方法

  • 客戶端中轉的授權方式

ecdd33241d4dbf6366467e28bc3ab8ad.png
  • 完全由服務端主導的授權方式

授權流程

  • 客戶端中轉的授權方式
    • 微信用戶進入頁面(動態網址需要提前向服務器端獲取授權地址)
    • 客戶端攜帶redirect_uri向微信服務器發起授權請求
    • 微信服務器授權成功會攜帶一個codeurl上返回
    • 客戶端隨即攜帶code向服務端發送請求
    • 服務端返回用戶信息
  • 完全由服務端主導的授權方式

客戶端中轉的授權方式技術實現

  • 獲取微信授權code
let redirectUri = encodeURI(window.location.href)
window.location.href = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=xxx&redirect_uri=${redirectUri}&response_type=code&scope=snsapi_userinfo&state=123#wechat_redirect`
  • 攜帶code向服務器端獲取用戶授權
let code = getQuery(window.location.href).code
axios.get("/xxx/getWxInfo?code=" + code).then(res => {if (res && res.data && res.data.code == 10000) {this.userInfo = res.data.data//獲取成功后將userInfo存儲在cookie中方便其他頁面使用//localstorge存儲在微信端存在問題,建議使用cookie存儲//后續會寫篇文章專門講解微信端cookie存儲和localstorge存儲setCookie('userInfo', this.userInfo);}else {alert('微信授權失敗,請重新微信授權后打開文章', res.code)}
}).catch(error => {this.userInfo = ''alert('微信授權失敗,請重新微信授權后打開', res.code)console.log('獲取微信授權出錯了', error)
})
  • 授權成功,此時已經拿到用戶的微信的授權信息和個人信息

微信分享

分享流程

  • 獲取微信分享授權
  • 自定義分享標題,分享摘要,分享圖片,并寫入微信配置(wx.config)
  • 調用分享接口(wx.ready)
  • 分享成功

微信分享技術實現

  • 微信分享是個頻繁調用的方法,實現過程中可以抽象一下
//調用服務器端接口驗證授權信息
function $setShare(options) {axios.get('/xxx/getWxSignature?url=' + encodeURIComponent(location.href.split('#')[0])).then(function(resp) {if (!resp || !resp.data || resp.data.code != 10000) { return }wx.config({// debug: true,// 開啟debug模式appId: resp.data.data.appid,timestamp: resp.data.data.timestamp,nonceStr: resp.data.data.noncestr,signature: resp.data.data.signature,jsApiList: ["onMenuShareTimeline", "onMenuShareAppMessage"]});var shareTimeLineData = options || {title: '分享標題',desc: '分享摘要',link: '',imgUrl:'',};var shareAppData = options || {title: '分享標題',desc: '分享摘要',link: '',imgUrl:'',};wx.ready(function() {wx.onMenuShareAppMessage(shareAppData);wx.onMenuShareTimeline(shareTimeLineData);});wx.error(function(res){console.log('分享簽證失敗', res)});},function(err){if (err) {alert(err);}else{alert('網絡錯誤,請稍后重試!');}});
}
  • 調用分享代碼實現
let shareWxData = {title: '測試微信分享標題',desc: '測試微信分享摘要',link: window.location.href,imgUrl: 'xxxxxxx',success: function(res) {// 這是微信分享的回調// 注意這個地方并不是用戶分享成功的回調,而是用戶點擊了分享的回調,微信現有版本不會告知開發者用戶是否分享成功}
}
$setWxShare(shareWxData)

作者:

輕易科技研發中心-前端部-張曉斌

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/534201.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/534201.shtml
英文地址,請注明出處:http://en.pswp.cn/news/534201.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

電腦打字手指正確姿勢_正確的彈琴手型,應該是怎樣的?

手型是基礎,手型規范才有助于練習出正確的指法,指法正確就可以提高練習質量。剛入門的時候,不能刻意的要求手型,但是我們要有一個基本的要求,就是手要保持放松。彈琴的時候,沒有多余的身體的力量參與到觸鍵…

php 開源 采集,迅睿CMS 火車頭內容采集

采集工具:火車采集器 v7.6采集模塊:新聞 News一、編寫采集入庫腳本接口新建:./api/caiji.php/*** 數據采集*/define(IS_API, basename(__FILE__, .php)); // 項目標識define(SELF, pathinfo(__FILE__, PATHINFO_BASENAME)); // 該文件的名稱r…

英文數據集txt_YOLOv5在建筑工地中安全帽佩戴檢測的應用(已開源+數據集)

點擊上方“計算機視覺cv”即可“進入公眾號”重磅干貨第一時間送達前言隨著人工智能的發展,現在越來越多的場景需要人工智能。在工廠的廠區中以安全為首,但工人普遍缺乏佩戴安全帽意識;工廠環境復雜,有各種各樣的禁止進入的區域&a…

浪潮集團PHP,浪潮php實習第一天(初識php)

先推薦幾個比較好的php初學者資料php manual.chm(可在csdn下載頻道下載,可查到大部分函數)比較好的開發工具1 eclipse PDT(對eclipse比較熟悉的比較適應)2.zendStudio(公認的最好的php集成開發環境)php沒有想象中的那么難學,不僅僅是它的語法&#xff0c…

檢測到目標url存在內部ip地址泄露_Cendertron,動態爬蟲與敏感信息泄露檢測

Cendertron,動態爬蟲與敏感信息泄露檢測Cendertron Crawler RendertronCendertron https://url.wx-coder.cn/HinPM 是基于 Puppeteer 的 Web 2.0 動態爬蟲與敏感信息泄露檢測工具。其依托于 xe-crawler 的通用爬蟲、調度與緩存模型,新增了 Monkey Test…

wamp2 php配置,wamp安裝后自定義配置的方法

WampServer是目前應用非常廣泛的PHP集成開發環境,本文就來講述Wamp安裝后自定義配置的方法。供大家參考借鑒。具體如下:wamp2.5安裝完畢后,自己手動重新設置了apache的默認根目錄。但是發現本機可以訪問,別人不能訪問。提示信息為…

屏幕壞點檢測圖片_iPhone新機如何檢測質量 iPhone新機檢測質量步驟【詳解】

iPhone新機怎么檢測好壞_iPhone新機檢測質量方法 說實話,蘋果對于iPhone的品控把握確實一代不如一代,特別是去年發布的iPhone7系列,很多用戶都反映自己新買的手機存在劃痕、屏幕發黃、掉漆等問題。那么當我們購買一部全新的iPhone7時&#xf…

php 安全mysql,關于php:我從mysql注入安全嗎?

本問題已經有最佳答案,請猛點這里訪問。這是否足以避免SQL注入?這里只需要mysql_real_escape_string()方法。在將數據插入數據庫之前,不應該執行htmlentities()或urlencode()。這些方法通常是在呈現您提供給用戶的視圖期間編寫的代碼。避免SQ…

excel單元格斜線_怎么在excel中畫斜線?怎么在excel表格中畫斜線?

在excel表格中畫斜線的技巧教程:1.在Excel中打開一個空白工作簿。 2.您可以在任何大小的單元格中執行此操作,但是如果先將其增大則更容易理解。為此,我們只需單擊并按住第1行和第2行之間的線,然后將其拖動到所需的高度即可。然后對…

php報表數據打印機,通過打印機打印帶打印功能的php表

我有以下php表,我如何只在php表中添加打印功能?點擊一個按鈕,下面的表格通過打印機打印,我試過’CTRL P’,我只得到頁面的html部分示例頁眉,頁腳,導航欄,而不是結果php結果echo "FILEIDFirstnameLastnameIssue DateInterest RateTermsBalance OutstandingBalan…

xbox one s驅動_理想照進現實 理想ONE開始接受預定

2016年4月22日,車和家創始人&CEO李想在源碼資本第二屆碼會年會首談車和家,改造城市出行。車和家 創始人&CEO 李 想2016年碼會年會演講2019年4月10日,增程式智能電動車「理想ONE」正式公布售價并開始接受預訂,并將于2019年…

two+few+arguments+php,PHP5.5 ~ PHP7.2 新特性整理

PHP5.5 ~ PHP7.2 新特性整理一、從PHP 5.5.x 移植到 PHP 5.6.x使用表達式定義常量在之前的 PHP 版本中, 必須使用靜態值來定義常量,聲明屬性以及指定函數參數默認值。 現在你可以使用包括數值、字符串字面量以及其他常量在內的數值表達式來 定義常量、聲…

date設置時間_解決 IDEA 無法找到 java.util.Date 的問題

原文首發于 https://studyidea.cn/問題最近在項目中頻繁使用到 java.util.Date,但是使用 IDEA 提示查找 Date 類,卻無法找到 java.util.Date。可以看到,智能提示的結果沒有 java.util.Date。沒辦法,只能暫時手動導入該包。最近閑下…

mysql插入語句例句,一句簡單的MySql插入語句怎么寫 ?

守候你守候我insert into 表名 values(default,"名字","2011-04-15 12:22:25"); //default可以換成null------------------------------insert into 表名 (name,datetime) values("名字","2011-04-15 12:22:25");使用SQL語法大寫&…

vue key重復_【第2112期】 import { reactive } from #39;vue#39;

前言今日早讀文章由Anthony Fu授權分享。Anthony Fu,是 Vue 的 Core Team 的一員,在 Vue主要負責 vue/composition-api 這個項目的維護。這是一個面向 Vue 2 的插件,它在 Vue 2 中增加了 Vue 3 的 Composition API 的支持。最近也加入了 Vite…

matlab系統穩定性分析,控制系統穩定性分析的MATLAB實現

收稿日期 :200706220 基金項目 :周口師范學院青年基金資助項目(No. ZKNUQN200621) 作者簡介 :劉  偉(1976 - ) ,女 ,河南太康人 ,助教 ,碩士 ,主要從事電力系統及其自動化仿真研究. 第 25 卷 第 2 期 周口師范學院學報 2008 年 3 月 Vol. 25 No. 2 Journal of Zhoukou Normal …

路由器下一跳地址怎么判斷_網絡基本功三:細說路由器

介紹以太網交換機工作在第二層即數據鏈路層,用于在同一網絡內部轉發以太網幀。但是,當源和目的IP地址位于不同網絡時,以太網幀必須發送給路由器。路由器負責在不同網絡間傳輸報文,通過路由表來決定最佳轉發路徑。當主機將報文發送…

HTML多選mysql,html多選下拉框 | 學步園

一個jquery ui,實現html的多選下拉框,在下拉里面加checkbox,不改變頁面的提交特性,只是動態的改變select選中的多選數據。jsp頁面例子:pageEncoding"UTF-8" import"java.util.*,java.text.*"%>String path…

利用逆矩陣解線性方程組_經典Jacobi方法用于求解矩陣特征值

1、引言求解線性方程組在許多領域中都有重要應用,寫成矩陣的形式: 。求解 可以寫成: ,這里需要求解矩陣 的逆。《線性代數》中給出的方法主要有兩類:1、設置增廣矩陣,利用高斯消元法,通過初等行…

filename: core/loader.php,使用第三方包后出現的這個錯誤,你們都遇到過嗎?

使用了一些第三方包,經常會發現,引入某些第三方包后(比如在laravel5.6中引入viacreative/sudo-su),使用命令行工具會遇到這樣的錯誤提示,卸載了第三方包后重新安裝vendor目錄問題立馬解決。真是把人頭發都愁白了:PHP F…