成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Vue3問題:如何實現微信掃碼授權登錄?

開發 前端
微信掃碼授權有幾種實現方式?說一下這幾種實現方式的原理是什么?Vue中的微信掃碼授權登錄,與Uniapp和原生小程序的微信授權登錄,它們之間有共同點嗎?

昨天搞了個服務器,騰訊云的輕量應用服務器,價格還算實惠。又搞了個自己的域名,但在起名字時犯了難,想了半天都不知道叫啥,后來還是感謝對象的指點,哈哈哈。

擁有了自己的服務器,接下來,就可以開始我的后端微服務學習啦,加油共勉。

一、需求分析,問題描述

1、需求

微信掃碼授權,如果允許授權,則登錄成功,跳轉到首頁。

2、問題

  • 微信掃碼授權有幾種實現方式?
  • 說一下這幾種實現方式的原理是什么?
  • vue中的微信掃碼授權登錄,與uniapp和原生小程序的微信授權登錄,它們之間有共同點嗎?

二、解決問題,答案速覽

1、網頁跳轉式

前端只需調用后端微信登錄的接口即可。生成微信二維碼、傳遞code參數等操作都在后端處理。

2、網頁內嵌式

  • 在public/index.html的head標簽中引入wxLogin.js。
  • 在template中設置一個內嵌二維碼容器,可以自定義容器的樣式。
  • 創建WxLogin對象,配置必要參數,并通過id關聯內嵌二維碼容器。其中,參數redirect_uri和appid最關鍵,redirect_uri配置的是掃碼授權成功后的重定向頁面地址,在重定向頁面可以拿到最最最重要的code參數。
  • 在重定向頁面通過code參數請求后端微信登陸的接口,獲取access_token并存到本地,登錄成功跳轉首頁。此處根據業務自定義邏輯即可。
// 在public/index.html的head標簽中引入
<script src="https://res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js"></script>
<!-- 內嵌二維碼容器 -->
<div id="login_container"></div>


// 獲取code
var obj = new WxLogin({
      // 需要顯示內嵌二維碼的容器id
      id: 'login_container', 
      // 應用ID
      appid: '', 
      // 網頁默認即可
      scope: 'snsapi_login', 
      // 授權成功后回調的url
      redirect_uri: encodeURIComponent(''), 
      // 可設置為簡單的隨機數加session用來校驗
      state: Math.ceil(Math.random() * 1000), 
      // 二維碼的樣式,提供"black"、"white"可選。
      style: 'black', 
      // 自定義樣式鏈接
      href: '' 
    })
  }
// 通過code請求接口獲取access_token
import { useRoute, useRouter } from 'vue-router'
const router = useRouter()
const route = useRoute


let code = route.query.code
let state = route.query.state
if (code) {
  let codeForm = {
    code: code,// 關鍵
    state: state,
  }
  // 調微信登錄的后端接口
  LoginApi(codeForm).then(res => {
    localStorage.setItem('access_token', res.data.token)
    router.push('home')
  })
}

三、問題解析,知識總結

1、微信掃碼授權登錄有幾種實現方式?

微信掃碼授權登錄有兩種實現方式:網頁外鏈式、網頁內嵌式。

網頁外鏈式

在選擇帶第三方登錄方式時,點擊微信登錄,然后會跳轉到一個新的微信掃碼頁面。當用戶掃碼允許授權登錄后,就會自動關閉掃碼頁面,然后跳轉到首頁。

此方式可以算是后端處理。

網頁內嵌式

在選擇帶第三方登錄方式時,點擊微信登錄,會在當前頁面的某處彈出一個內嵌的二維碼。當用戶掃碼允許授權登錄后,就會直接跳轉到首頁。

此方式可以算是前端處理,但這種方式比較推薦,用戶體驗比較好。

2、說一下這幾種實現方式的原理是什么?

網頁外鏈式

步驟一:用戶進入登錄頁,在登錄頁選擇微信登陸,前端調用后端微信登錄的接口,后端會生成微信二維碼,將地址返回給前端,前端響應后會在新頁面打開這個二維碼地址。

步驟二:用戶用微信掃碼,當授權成功后,就會自動重定向到后端掃碼回調的接口。可以自動重定向到指定接口,是因為在生成二維碼時,回調地址填的是后端接口地址,此處區別于網頁內嵌式。

步驟三:后端會在重定向掃碼回調接口中獲取到code參數,再通過code參數獲取到access_token、openid,進而獲取用戶信息,最終返回重定向首頁地址給前端,登錄成功跳轉到首頁。其中,地址內攜帶著access_token、openid、用戶信息等參數,前端會保存這些參數到本地存儲中。

網頁內嵌式

步驟一:用戶進入登錄頁,在登錄頁選擇微信登陸,然后就會在內嵌二維碼容器中顯示出二維碼。

步驟二:用戶用微信掃碼,當授權成功后,就會自動重定向到中轉頁。其中,中轉頁可以是注冊頁,也可以是當前登錄頁。

步驟三:前端在中轉頁獲取當前路由對象的query信息,并通過請求接口將query信息中的code參數傳給后端。

步驟四:后端就會通過code參數獲取到access_token、openid,進而獲取用戶信息,當前端拿到這些參數后就會登錄成功,跳轉到首頁,并保存到本地存儲中。

3、vue中的微信掃碼授權登錄,與uniapp和原生小程序的微信授權登陸,它們之間有共同點嗎?

uniapp的微信授權登錄,主要借助uni.getUserProfile和uni.login這兩個API實現。getUserProfile作用是獲取用戶授權,login作用是獲取code參數。

原生小程序的微信授權登錄,主要借助wx.getUserProfile和wx.login這兩個API實現。getUserProfile作用是獲取用戶授權,login作用是獲取code參數。

uniapp和原生小程序的微信授權登陸的原理,和vue中的微信掃碼授權登錄基本一致,掌握其一即可。

責任編輯:姜華 來源: 今日頭條
相關推薦

2023-12-18 09:58:46

微信掃碼支付Vue3

2020-03-08 15:39:41

微信掃碼登陸二維碼

2024-01-03 08:20:40

2024-02-27 08:27:18

元素拖拽Vue3拼圖驗證

2022-06-10 06:55:21

JustAuthSpring

2024-02-01 09:10:04

頁面引導工具Vue3

2021-10-26 10:29:45

掃碼登錄功能

2024-01-23 09:15:33

Vue3組件拖拽組件內容編輯

2020-04-29 09:22:10

微信更新內測

2021-12-02 05:50:35

Vue3 插件Vue應用

2024-01-08 08:50:19

Vue3級聯菜單數據懶加載

2023-03-26 00:00:00

2023-11-28 09:03:59

Vue.jsJavaScript

2020-02-05 14:12:19

微信淘寶開端

2021-07-12 05:31:15

微信微信電腦版掃碼登錄

2021-11-30 07:31:42

微信支付寶付款

2022-03-10 11:04:04

Vue3Canvas前端

2024-03-19 08:35:30

Vue3添加水印維護版權標識

2025-06-09 07:11:56

2020-04-15 16:30:24

掃碼登錄微信前端
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩国产精品一区二区三区 | 91精品国产一区二区三区 | 激情五月婷婷 | 日本超碰 | 久久99这里只有精品 | 久久久久久久久淑女av国产精品 | 久久久亚洲综合 | 欧美在线激情 | 国产成人精品一区二区三区在线 | 亚洲一区二区三区视频在线 | 天天操天天干天天透 | 99久久日韩精品免费热麻豆美女 | 尤物视频在线免费观看 | 国产一区二区三区网站 | 国产精品1区2区 | 精品欧美一区二区三区久久久 | 天天综合干 | 网站国产| 毛片大全| 亚洲在线一区二区 | 亚洲一区二区成人 | 香蕉久久a毛片 | 天天干干| 91视在线国内在线播放酒店 | 亚洲国产成人在线视频 | 婷婷在线免费 | 精品视频在线播放 | 神马影院一区二区三区 | 国产精品99久久久久久动医院 | 日韩成人在线视频 | 欧美日韩黄 | 欧美日韩在线观看视频网站 | 久久久av一区| 国产亚洲高清视频 | 中文字幕在线观看 | 亚洲欧美日韩在线不卡 | 亚洲国产精品一区二区第一页 | 夜夜草av | 天天综合天天 | 国产精品一区二区在线免费观看 | 国产一区二区三区精品久久久 |