怎樣操作vue微信授權登陸
這次帶給大家怎樣操作vue微信授權登陸,操作vue微信授權登陸的注意事項有哪些,下面就是實戰案例,一起來看一下。
背景
vue前後端分離開發微信授權
#場景
app將商品分享到微信朋友圈或分享給微信好友,使用者點擊頁面時進行微信授權登陸,取得使用者資訊。
問題:沒有固定的h5應用程式首頁。授權後重定向url帶參數並且很長
本人愚鈍,開發過程中,嘗試過很多方法,踩坑不足以形容我的心情,可以說每一次都是一次跳井的體驗啊。
1.一開始是前端請求微信連接,返回code,然後code作為再去請求後台接口獲取token,後面看到別人的博客說這個方法不好,最好就是直接請求後台接口,然後後台回到url做跳轉,所以就採用了最傳統的方法,後台回到url,前台跳轉。
async ReturnGetCodeUrl() { let { data } = await getWxAuth({}); if (data.status == 200) { window.location.href = data.url; // 返回的结果 // redirect_uri重定向的url是后台的地址,后台就是可拿到code,获取token // https://open.weixin.qq.com/connect/oauth2/authorizeappid=xxxxxxxxxxxxxxxxxx&redirect_uri=***url***&response_type=code&scope=snsapi_userinfo&state=STATE&connect_redirect=1#wechat_redirect } },
2.這時候就出現一個問題,微信授權要跳跳跳,最終想回到第一次點進來時候的鏈接就蛋疼了,從網上查了一下解決方法,將鏈接本身作為redirect_uri參數,大概就是這個樣子
https://open.weixin.qq.com/connect/oauth2/authorizeappid=xxxxxxxxxxxxxxxxxx&redirect_uri=*www.admin?http://www.xxx .com/h5/product*&response_type=code&scope=snsapi_userinfo&state=STATE&connect_redirect=1#wechat_redirect
然而我們的前台連結是這個鬼樣子的,本身帶參數,而且超長,what?微信可能不會接受我長這麼醜。 /(ㄒoㄒ)/~~
最終放棄了這個方案3.考慮如何重定向我的前台地址,並且獲取token接下來就是我現在用的方法,bug還有很多,先分享我的方法,後期優化或有更好的方法再做修改http://www.xxx.com/h5/product?id=6RedfM5O4xeyl0AmOwmyipkHr8AQCv- hYXZVAIFTwDXOsWSKqgu3VaCmaKSerBnavWuzOYXZVAIFTw1OsWSKqgu3VaCmaKSerBnaAKP232F445F4F45F45F45F45F4F45F45F4F45F45F4F45F45F45F45F45Fp zp27GqqpNya7HbdEA34qGQJvHIA9tlIMkeEWid1112b8oZuP3FQBwU//MaSrovzQP6LlzWamyPnv0vMizu8uh0ItpJOQUV1m/temF3UlzWamyPnv0vMizu8uh0ItpJOQUV1m/temF3UlzWamyPnv0vMizu8uh0ItpJOQUV1m/temF3U
在main.js中
路由全域鉤子判斷本地是不是有user_token,也就是微信授權後回傳的token,如果沒有token,而且目前的路由不是author(專門為了授權而生的頁面),那就保存當前的url,例如www.xxx.com/h5/product?id=6RedfM5O4xeyl0AmOwm,然後進入author。那如果本地有token,就是用戶之前授權拿到過token並且vuex裡沒有用戶信息,那我就獲取用戶信息並保存在vuex中,這裡遇到一個問題就是token會出現過期的情況,那我就刪除了本地的user_token,window.localStorage.removeItem("user_token");刷新頁面router.go(0);這時候就重新走了一遍如果沒有token的情況。
router.beforeEach((to, from, next) => { // 第一次进入项目 let token = window.localStorage.getItem("user_token"); if (!token && to.path != "/author") { window.localStorage.setItem("beforeLoginUrl", to.fullPath); // 保存用户进入的url next("/author"); return false; } else if (token && !store.getters.userInfo) { //获取用户信息接口 store .dispatch("GetUserInfo", { user_token: token }) .catch(err => { window.localStorage.removeItem("user_token"); router.go(0); return false; }); } next(); });
<template> <p> 授权中。。。 </p> </template> <script> import { getWxAuth } from '@/service/getData' import { GetQueryString } from '@/utils/mixin'; export default { data() { return { token: '', }; }, computed: { }, created() { this.token = window.localStorage.getItem("user_token"); //判断当前的url有没有token参数,如果不存在那就跳转到微信授权的url //就是前面说的ReturnGetCodeUrl方法 if (!GetQueryString("token")) { this.ReturnGetCodeUrl(); } else { //如果有token,如http://www.xxxx.com/h5/author?token=xxxxxxxxx&msg=200,这里的参数就是后台重定向到前台http://www.xxxx.com/h5/author,并携带的参数。这样就可以拿到我们想要的token了 //判断一下后台返回的状态码msg,因为可能出现微信拿不到token的情况 let msg = GetQueryString("msg") if (msg = 200) { this.token = GetQueryString("token"); //存储token到本地 window.localStorage.setItem("user_token", this.token); //获取beforeLoginUrl,我们的前端页面 let url = window.localStorage.getItem("beforeLoginUrl"); //跳转 this.$router.push(url); //删除本地beforeLoginUrl removeLocalStorage("beforeLoginUrl"); }else{ //msg不是200的情况,可能跳到404的错误页面 } } }, methods: { async ReturnGetCodeUrl() { let { data } = await getWxAuth({}); if (data.status == 200) { window.location.href = data.url; } }, }, watch: {}, components: {}, mounted: function () {} } </script> <style lang='scss' scoped> </style>
export const GetQueryString = name => { var url = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); var newUrl = window.location.search.substr(1).match(url); if (newUrl != null) { return unescape(newUrl[2]); } else { return false; } };
以上是怎樣操作vue微信授權登陸的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

一些玩家在PS4或PS5發佈時遇到了一個奇怪的問題。例如,當他們的PlayStation網路登入失敗,但網路連線正常時,這可能會引起困擾。輸入登入資訊時,可能會遇到錯誤,而且可能無法加入PSParty聊天。如果你遇到了類似問題,這個指南可能會幫助你解決。在PlayStationNetworkSign-in旁邊,你會看到錯誤訊息‘AnErrorHaveAreAre’,它會顯示‘Failure’。其他參數如取得IP位址、網路連線和連線速度都是成功的。那麼,這裡的問題可能是什麼呢?我會給你工作的

AADSTS7000112錯誤可能會阻止您使用Microsoft帳戶登入應用程序,造成您不便。本文將為您提供解決方案,幫助您解決這個問題,恢復正常的登入體驗。登入:很抱歉,您登入時遇到問題。 AADSTS7000112:應用程式已停用。幸運的是,您可以遵循一些簡單的建議來修復錯誤。錯誤代碼AADSTS7000112是什麼?錯誤代碼AADSTS7000112表示與Microsoft的AzureActiveDirectory連線出現問題。通常情況下,這可能是由於嘗試登入的Microsoft應用程式被

PyCharm是一款非常受歡迎的Python整合開發環境(IDE),它提供了豐富的功能和工具,使得Python開發變得更有效率和便利。本文將為大家介紹PyCharm的基本操作方法,並提供具體的程式碼範例,幫助讀者快速入門並熟練操作工具。 1.下載安裝PyCharm首先,我們需要前往PyCharm官網(https://www.jetbrains.com/pyc

sudo(超級使用者執行)是Linux和Unix系統中的關鍵指令,允許一般使用者以root權限執行特定指令。 sudo的功能主要體現在以下幾個方面:提供權限控制:sudo透過授權使用者以臨時方式取得超級使用者權限,從而實現了對系統資源和敏感操作的嚴格控制。普通用戶只能在需要時透過sudo獲得臨時的特權,而不需要一直以超級用戶登入。提升安全性:透過使用sudo,可以避免在常規操作中使用root帳號。使用root帳戶進行所有操作可能會導致意外的系統損壞,因為任何錯誤或不小心的操作都將具有完全的權限。而

企業微信的郵箱怎麼登陸?企業微信APP中是可以登陸郵箱,但是多數的用戶不知道郵箱如何的登陸,接下來就是小編為用戶帶來的企業微信郵箱登陸方法圖文教程,感興趣的用戶快來一起看看吧!企業微信使用教程企業微信的郵箱怎麼登陸1、先打開企業微信APP,進入到主頁最底部【工作台】點擊來專區;2、之後在工作台專區中,選擇其中的【企業郵箱】服務; 3.然後跳到企業信箱功能頁,點選底部的【綁定】或【換一個信箱】;4、最後在下圖所示的頁面輸入【QQ帳號】和【密碼】即可登陸信箱。

LinuxDeploy的操作步驟及注意事項LinuxDeploy是一款強大的工具,可協助使用者在Android裝置上快速部署各種Linux發行版,讓使用者在行動裝置上體驗完整的Linux系統。本文將詳細介紹LinuxDeploy的操作步驟以及注意事項,同時提供具體的程式碼範例,幫助讀者更好地使用此工具。操作步驟:安裝LinuxDeploy:首先在
![GeForce Experience登入當機[修復]](https://img.php.cn/upload/article/000/887/227/171084420790568.png?x-oss-process=image/resize,m_fill,h_207,w_330)
本文將引導您解決在Windows11/10上出現的GeForceExperience登入當機問題。通常情況下,這可能是由於不穩定的網路連接、損壞的DNS快取、過時或損壞的圖形卡驅動程式等原因引起的。修復GeForceExperience登入黑畫面在開始之前,請確保重新啟動您的網路連線和電腦。有時候,這個問題可能只是因為臨時問題所引起的。如果您仍遇到NVIDIAGeForceExperience登入黑畫面問題,請考慮採取以下建議:檢查您的internet連線切換到另一個Internet連線停用您的

想必很多的用戶家裡都有那麼幾台不用的電腦,因為長時間不用完全忘了開機密碼,於是想知道一下,忘記密碼要怎麼操作呢?那就一起來看看吧。 win10開機密碼忘記按F2怎麼操作1、按下電腦的電源鍵,然後開機時按下F2(不同電腦品牌進入bios的按鍵也不同)。 2.在bios介面中,找到security選項(不同品牌電腦的位置可能有所不同)。一般都在頂部的設定選單中。 3.然後找到SupervisorPassword選項並且點選。 4.這時候用戶就可以看到自己的密碼了,同時找到旁邊的Enabled切換為Dis
