基於uniapp的微信登錄

一、uniapp與微信登錄簡介

uniapp是一個基於Vue.js框架的多端跨平台開發框架,可以同時開發出微信小程序、H5網頁、App應用等多個平台的應用程序。微信登錄則是基於微信公眾平台的開放能力所提供的一種登錄方式,用戶可以通過微信授權的方式登錄第三方應用,並使用微信賬號進行數據傳輸、支付等操作。

在uniapp中,通過微信開放的API和uniapp的封裝,可以方便地實現微信登錄功能,提高實現效率。

二、實現微信登錄的方法

1. 獲取微信授權登錄

首先需要在微信公眾平台進行配置,為應用開通授權登錄的能力,然後在uniapp的配置文件中添加相應的配置信息。

{
    "mp-weixin": {
        "appid": "xxxxxx",
        "oauth": {
            "scope": "snsapi_login",
            "state": "#wechat_redirect",
            "redirect_uri": "http://example.com"
        }
    }
}

其中,appid為微信公眾平台的應用ID,oauth為授權登錄的相關配置信息,scope為授權登錄的類型,snsapi_login為授權登錄的方式;state為微信回調的地址鏈接,#wechat_redirect為微信回調地址鏈接後面的參數;redirect_uri為授權後重定向的地址。

接下來,在頁面中添加微信登錄按鈕,並通過uniapp提供的API對按鈕添加點擊事件:

<template>
    <button @click="loginWithWechat">微信登錄</button>
</template>

<script>
import {wxlogin} from '@/common/js/util.js'

export default {
    methods: {
        async loginWithWechat() {
            const res = await uni.login({
                provider: 'weixin'
            })
            const {code} = res[1]
            wxlogin(code).then(res => {
                console.log(res)
            }).catch(error => {
                console.error(error)
            })
        }
    }
}
</script>

在調用微信登錄介面獲取到用戶的登錄憑證code之後,通過自定義的wxlogin方法發送請求至後端伺服器,進行微信授權登錄。

2. 後端微信授權登錄的實現

在後端伺服器中,可以通過微信提供的API獲取到用戶的基本信息、頭像、昵稱等資料,並與本地應用的賬號進行綁定,實現微信授權登錄的功能。

// 微信授權登錄獲取用戶信息

const wxLoginCallback = async (ctx, next) => {
    const code = ctx.query.code
    const res = await axios.get(`
        https://api.weixin.qq.com/sns/jscode2session?appid=${appid}&secret=${appsecret}&js_code=${code}&grant_type=authorization_code
    `)
    const {openid, session_key} = res.data
    const userInfo = await axios.get(`
        https://api.weixin.qq.com/sns/userinfo?access_token=${session_key}&openid=${openid}&lang=zh_CN
    `)
    const {nickname, headimgurl, sex} = userInfo.data
    const user = await User.findOrCreate({
        where: {
            openid: openid
        },
        defaults: {
            nickname: nickname,
            avatarUrl: headimgurl,
            gender: sex
        }
    })
    //生成token
    const token = jwt.sign({
        id: user[0].id,
        openid: openid
    }, secretKey, {
        expiresIn: '24h'
    })
    ctx.body = {
        success: true,
        msg: '授權登錄成功',
        data: {
            token: token,
            userInfo: user[0]
        }
    }
} 

在獲取到用戶的信息之後,通過JSON Web Token (JWT)生成一個token,並返回至客戶端,實現登錄授權。

三、微信登錄的注意事項

1. 微信登錄功能必須在微信小程序、微信公眾號等微信官方平台中使用。

2. 微信登錄必須先在微信公眾平台中配置好授權登錄的相關信息,才能夠在應用程序中使用。

3. 微信登錄時,用戶需要確認授權登錄應用程序,否則將無法獲取到對應的用戶信息。

4. 微信登錄時,用戶如果已經在微信中登錄,可以在沒有重新輸入帳號和密碼的情況下登錄應用程序。

5. 微信登錄時,客戶端和伺服器需要進行相應的信息交互,以實現授權登錄的功能。

四、總結

本文主要介紹了基於uniapp的微信登錄實現方法,通過獲取微信授權登錄、後端微信授權登錄實現了授權登錄的功能,並闡述了微信登錄的注意事項。開發者可以按照上述方法實現微信登錄功能,提高應用程序的用戶體驗度。

原創文章,作者:CRMZ,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/137602.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
CRMZ的頭像CRMZ
上一篇 2024-10-04 00:17
下一篇 2024-10-04 00:17

相關推薦

  • uniapp分頁第二次請求用法介紹

    本文將從多個方面對uniapp分頁第二次請求進行詳細闡述,並給出對應的代碼示例。 一、請求參數的構造 在進行分頁請求時,需要傳遞的參數體包含當前頁碼以及每頁顯示的數據量。對於第二次…

    編程 2025-04-27
  • uniapp ios打包詳解

    一、環境搭建 首先需要安裝Xcode,並在Xcode中登錄自己的Apple ID,開啟自己的開發者賬戶。 接著,需要在uniapp項目中配置簽名證書和描述文件。步驟如下: 在Xco…

    編程 2025-04-25
  • uniapp導航欄字體大小探究

    隨著移動端應用的發展,導航欄越來越成為移動應用中一個重要的組成部分。在如此眾多的移動端開發框架中,uniapp已經成為了很多開發者的首選。在uniapp中,導航欄也是一個非常重要的…

    編程 2025-04-25
  • 全面解析uniapp如何獲取當前位置

    一、uniapp使用定位API實現實時定位 1、uniapp提供的定位API可以獲取當前設備位置,使用方法如下: // 開啟實時定位 uni.startLocationUpdate…

    編程 2025-04-25
  • uniapp面試題解析

    一、uniapp簡介 uniapp是一種基於vue.js框架的開源跨平台開發框架,可以讓開發者使用vue的語法在多個平台上進行一次編譯即可生成iOS、Android、Web和小程序…

    編程 2025-04-25
  • uniapp跳轉到外部鏈接詳解

    一、常規跳轉方式 1、使用a標籤進行跳轉: <a href=”https://www.baidu.com”>跳轉到百度</a> 2、使用window.loc…

    編程 2025-04-24
  • uniapp打包app指南

    一、準備工作 在開始打包app之前,我們需要預先準備好一些工作。首先,確保你已經安裝了相關的軟體:HBuilderX、Android SDK、Xcode(如果你需要在iOS上打包)…

    編程 2025-04-24
  • Uniapp小程序分包詳解

    一、分包原理 小程序分包是根據小程序自身限制,將小程序內部的代碼及資源分別打包成多個包,最終上傳到微信伺服器。具體原理如下: 1、小程序總體積不能超過 8M,同時需要包括框架、業務…

    編程 2025-04-23
  • 深入探討uniapp內嵌HTML頁面

    一、HTML頁面的嵌入方式 1、使用`uni-web-view`原生組件嵌入HTML頁面在uni-app中,可以使用`uni-web-view`組件來嵌入HTML頁面。其中,`un…

    編程 2025-04-23
  • UniApp二維碼生成詳解

    一、UniApp二維碼生成海報 海報是一種非常流行的宣傳方式。在UniApp中,我們可以利用uni-app-qrcode組件生成二維碼再利用canvas生成海報。具體步驟如下: 1…

    編程 2025-04-23

發表回復

登錄後才能評論