国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

微信小程序實現用戶登錄(詳)

這篇具有很好參考價值的文章主要介紹了微信小程序實現用戶登錄(詳)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

微信小程序登錄,微信小程序相關,微信小程序,javascript? ? ? ? * 源碼已經上傳到資源處,需要的話點擊跳轉下載 |? 源碼下載

????????用戶登錄是微信小程序的重要內容,那么今天就講用戶登錄的一個流程,當然微信官方文檔也有相關的一個登錄流程圖,這里也給大家附上地址:官方 | 小程序登錄?。

用戶登錄流程

? ? ? 用戶登錄流程可以用這一句話簡單概括:" 3個角色,4個步驟?",3個角色就是" 小程序 ,開發(fā)者服務器 ,微信接口服務??",4個步驟就是:其一小程序獲取code,其二將code發(fā)送到開發(fā)者服務器,其三開發(fā)者服務器通過微信接口服務校驗登錄憑證?,其四開發(fā)者服務自定義登錄的狀態(tài)。

微信小程序登錄,微信小程序相關,微信小程序,javascript

? ? ? ? 知道了對應的三個角色,同時要對四個步驟有一個基本的認識,那么上面提供了官方文檔的鏈接,可以自己看文檔也可以,看我的一個淺薄見解也行;首先小程序通過wx.login()獲取登錄憑證code,每次調用code均不同,有效時間是5分鐘,該code被微信接口服務驗證一次就會失效了,小程序獲取到code之后,通過wx.request()將code發(fā)送到開發(fā)者服務器,開發(fā)者服務器將appid,appSecret(密鑰),和code發(fā)送給微信接口服務去校驗登錄憑證,成功會返回session_key(會話信息記錄)和openid(用戶唯一標識),用戶登錄成功后,開發(fā)者服務器可以將openid和session_key保存,生成一個自定義登錄態(tài)的token(令牌)響應回去給小程序,通過token可以查詢openid和session_key,小程序下次請求只要攜帶著token就可以證明已經登錄。


搭建開發(fā)者服務器?

? ? ? ? 在實際開發(fā)中是去購買服務器的,那么這里僅限了解和搭建,那么就用本地localhost:3000作為服務器的端口,選用node.js來搭建開發(fā)者服務器?,如何搭建大家可以看一下這篇內容學習如何搭建,這里就將初步搭建的代碼放在這里,不過多的來介紹;

微信小程序搭載node.js服務器 (簡)https://blog.csdn.net/weixin_52203618/article/details/124225264index.js 文件代碼

const express = require('express') 				
const bodyParser = require('body-parser')		
const request = require('request')				
const app = express()

app.use(bodyParser.json())	

app.listen(3000, () => {
    console.log('server running ...');
})

????????這里暫時不將所有的接口寫完,等用到的時候我們再寫,內容是一個循序漸進的過程。


步驟1:獲取code

? ? ? ? ?小程序通過wx.login()獲取登錄憑證code,那么在微信開發(fā)者工具中創(chuàng)建一個名為Login的小程序,在這里要實現一個小程序啟動時自動執(zhí)行登錄的操作,在app.js文件中來編寫代碼,可以在onLaunch中進行觸發(fā);

App({
    onLaunch:function(){
       this.login()  // 調用
    },
    
    login:function(){
        // wx.login()獲取code
        wx.login({
            success:(res)=>{
                console.log("code: " + res.code);
            }
        })
    }
})

?以上就是獲取code,此時可以在控制臺上看到打印出來的code;

步驟二:將code發(fā)送到開發(fā)者服務器

通過wx.request()將code發(fā)送到開發(fā)者服務器

login:function(){
    // wx.login()獲取code
        wx.login({
            success:(res)=>{
                console.log("code: " + res.code);
                wx.request({
                    url:'http://127.0.0.1:3000/login',
                    method:'POST',
                    data:{
                        code : res.code
                    }
                })
            }
    })
}

????????在開發(fā)者服務器當中來個響應請求接口,請求的方式是post,那可以在index.js文件當中編寫代碼,這里如果你安裝了nodemon的話可以不用重新啟動,如果沒有,則需要命令行重新輸出node index.js重新運行。

// 寫在app.listen即可
// '/login'即響應在小程序中的請求http://127.0.0.1:3000/login
app.post('/login',(req,res)=>{
    console.log('code: '+req.body.code) // 打印一下code
})

app.listen(3000, () => {
    console.log('server running...');
})

微信小程序登錄,微信小程序相關,微信小程序,javascript

微信小程序登錄,微信小程序相關,微信小程序,javascript

?可以看到小程序通過wx.request()的方式成功將code發(fā)送到開發(fā)者服務器上;

步驟三:通過微信接口服務校驗

????????開發(fā)者服務器將appid,appSecret(密鑰),和code發(fā)送給微信接口服務去校驗登錄憑證,成功會返回session_key(會話信息記錄)和openid(用戶唯一標識);這時主要是編寫開發(fā)者服務器當中的代碼,在此之間需要開發(fā)者將自己的appid和appSecret密鑰準備好,這里也給大家將如何獲取到;

如何獲取 appid(用戶唯一標識),appSecret(用戶密鑰)?

登錄微信小程序后臺,登錄之后,點擊【開發(fā)】選項中的【開發(fā)管理】就可以看到;?微信公眾平臺 (qq.com)https://mp.weixin.qq.com/微信小程序登錄,微信小程序相關,微信小程序,javascript

?????????現在編寫開發(fā)者服務器當中的代碼;有了code,appid,appsecret就可以進行微信接口服務校驗了,附上這個官方鏈接用到復制即可,以防自己打錯?auth.code2Session | 微信開放文檔

// 開發(fā)者信息
const wx = {
    // appid:' ',  // 填寫用戶自己的appid
    // secret:' '  // 填寫用戶自己的密鑰
}

// 寫在app.listen即可
// '/login'即響應在小程序中的請求http://127.0.0.1:3000/login
app.post('/login',(req,res)=>{
    console.log('code: '+req.body.code) // 打印一下code
    // code,appid,secret都有了就發(fā)起請求到微信接口服務校驗
    var url = 'https://api.weixin.qq.com/sns/jscode2session?appid=' + wx.appid + '&secret=' + wx.secret + '&js_code=' + req.body.code + '&grant_type=authorization_code'
    request(url, (err, response, body) => {
		//	可以獲取到 session_key(會話信息) 、 openid(用戶唯一標識)
        console.log('session: ' + body)
		//  上面的session信息是字符串數據,通過JSON.parse()轉成js對象
        // var session = JSON.parse(body)
		console.log(session);
})

app.listen(3000, () => {
    console.log('server running...');
})

????????成功之后會返回openid和session_key,openid是用戶在這個小程序上唯一的id,不同小程序用戶的id都不一樣,session_key是用戶的會話信息記錄;將結果打印出來,可以在開發(fā)者服務器當中看到如下:

微信小程序登錄,微信小程序相關,微信小程序,javascript

? ? ? ? 以上就是校驗成功之后所返回的session_key和openid;這里注意的是賬戶不得是測試的賬戶,否則獲取不到code,獲取不到code,則校驗不能通過;

步驟四:開發(fā)者服務器自定義登錄態(tài)

? ? ? ? 通過校驗成功后返回的session_key和openid進行保存,實際開發(fā)中,通常會使用數據庫來保存數據,比如可以用MongoDB,這里就不搭建數據庫來存數據,將其作為數據保存到我們的變量當中,如果后續(xù)有機會會專門做一期;openid是用戶的唯一標識,所以可以判斷session中是否存有openid,如果有我們才返回一個token回去,返回去的token不能是固定的,固定存在一定的分析,這時可以用這個時間戳生成token,當然再實際開發(fā)中是推薦使用比較成熟模塊生成token,避免token被偽造帶來不好的影響,這里我們就通過時間戳的方式來生成token給大家演示這個過程;

// 開發(fā)者信息
const wx = {
    appid:'',
    secret:''
}

// 模擬數據庫存放數據
var db = {
	user: {},		// userInfo
    session: {}		// 保存 openid 和session_key會話信息 
}

app.post('/login', (req, res) => {
    // 注意:小程序端的appid必須使用真實賬號,如果使用測試賬號,會出現login code錯誤
    console.log('code: ' + req.body.code)
	// 接收code參數(req.body.code)
    var url = 'https://api.weixin.qq.com/sns/jscode2session?appid=' + wx.appid + '&secret=' + wx.secret + '&js_code=' + req.body.code + '&grant_type=authorization_code'
	request(url, (err, response, body) => {
        var session = JSON.parse(body)
		// 將openid和session_key保存后響應token回去,openid是用戶的唯一標識
        // if(session.openid) {
			// 時間戳來生成token
            var token = 'token_' + new Date().getTime()  
            db.session[token] = session
			console.log(db);
            if(!db.user[session.openid]) {
                 db.user[session.openid] = {
                       state:1  // 成功登錄可以獲取
                 }
             }
        }
        res.json({
            token: token  // 返回token
        })
    })
})

微信小程序登錄,微信小程序相關,微信小程序,javascript

????????成功之后返回token,可以在小程序當中的wx.request()請求校驗當中添加請求成功之后將返回的數據進行打印到小程序的控制臺上;

login:function(){
...代碼省略...
wx.request({
     url: 'http://127.0.0.1:3000/login',
     method:'POST',
     data:{ code:res.code },
     success:(res)=>{
     // 將請求成功的token打印
        console.log("token : " + res.data.token);
          }
     })
...代碼省略...   
},

微信小程序登錄,微信小程序相關,微信小程序,javascript

微信小程序登錄,微信小程序相關,微信小程序,javascript

將返回到小程序的token進行一個緩存,小程序的下次請求時只要攜帶token,就可以證明用戶已經登錄,那么我們在進入小程序之前就需要將檢查是否登錄。

檢查用戶是否登錄

? ? ? ? ?在檢查用戶登錄之前,將返回的token進行數據緩存,token是公共數據,是多個頁面當中需要用到的,可以定義為全局的globalData;數據緩存可以用wx.setStorage(),如果沒用過的,這里提供官方文檔,以及簡單講一下,主要是兩個參數,一個是key,一個是data,這里不適用加密手段,了解基礎使用,再琢磨加密吧。附上開發(fā)者文檔的地址:wx.setStorage() | 微信開發(fā)文檔

login:function(){
    // 1.wx.login()獲取code
    wx.login({
      success:(res)=>{
        ....省略...
          success:(res)=>{
              console.log("token : " + res.data.token);

              // 將token保存為公共數據(多頁面使用->全局globalData)
              this.globalData.token = res.data.token
              // 將token保存在數據緩存中(下次無需重新獲取token)
              wx.setStorage({
                key:'token',
                data:res.data.token
              })

        ...省略...
  },
  globalData:{
    token:null
  }
})

可以查看是否已經緩存下來,打開控制臺查看,如下圖

微信小程序登錄,微信小程序相關,微信小程序,javascript

檢查用戶登錄

? ? ? ? 上述內容將返回token緩存下來,那么檢查的是否需要先從緩存當中看是否有token,如果有則可以請求服務器去檢驗token是否有效,如果沒有token,則按照原來的方式去調用login()來獲取token;

App({
  onLaunch:function(){
    // 檢測用戶是否登錄
    this.checkLogin(res=>{
       console.log('is_login : ',res.is_login);
      // 未登錄 -> login()
      if(!res.is_login){
        // 調用Login
        this.login();
       }
     })
  },
  // checkLogin()
  checkLogin:function(callback){
    var token = this.globalData.token
    if(!token){
      // 從緩存中獲取token
      token = wx.getStorageSync('token')
      if(token){
        this.globalData.token = token
      }else{
        callback({ is_login : false })
      }
    }
  
    // 發(fā)送請求檢驗token是否存在
    wx.request({
      url: 'http://127.0.0.1:3000/checklogin',
      data:{
        token : token
      },
      success:(res)=>{
        console.log(res);
        callback({
          is_login:res.data.is_login
        })
      }
    }) 
  },
  ....省略....

開發(fā)者服務器代碼編寫 index.js

????????響應接口請求,查詢保存的數據庫當中是否有該token的存在,判斷取出的session是否為undefined,如是則表示token值已經失效了,如有緩存token且token有效則表示用戶已經登錄;

// index.js

...省略...

// 檢查用戶是否已經登錄
app.get('/checklogin', (req, res) => {
    var session = db.session[req.query.token]
    console.log('checklogin: ', session)
    // 將用戶是否已經登錄的布爾值返回給客戶端
    res.json({
        is_login: session !== undefined
    })
})

app.listen(3000, () => {
    console.log('server running...');
})

微信小程序登錄,微信小程序相關,微信小程序,javascript

微信小程序登錄,微信小程序相關,微信小程序,javascript微信小程序登錄,微信小程序相關,微信小程序,javascript

?????????現在緩存當中有了token值,我們重新編譯一下,此時緩存當中是有token值的,is_login的值為 true ,證明用戶已經登錄;

微信小程序登錄,微信小程序相關,微信小程序,javascript

????????以上就是這篇文章的內容,講述微信小程序當中的一個重要環(huán)節(jié)用戶登錄的流程,小白和較為初級的比較適合,篇幅可能長了一些,感謝大家的支持!

微信小程序登錄,微信小程序相關,微信小程序,javascript文章來源地址http://www.zghlxwxcb.cn/news/detail-777654.html

到了這里,關于微信小程序實現用戶登錄(詳)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • Java后臺實現網站微信掃碼登錄功能,獲取用戶openid,及微信用戶信息(小程序碼方案),關聯微信小程序(個人主體小程序也可以)

    Java后臺實現網站微信掃碼登錄功能,獲取用戶openid,及微信用戶信息(小程序碼方案),關聯微信小程序(個人主體小程序也可以)

    目錄 前言 下面展示操作流程 注冊微信小程序 通過后臺獲取小程序碼 前端處理 時序圖理解 方案實現步驟 前言 很多業(yè)務場景之下我們需要實現? 微信掃碼登錄? 的需求,如: 同步網站與小程序的用戶數據 。 需要獲取用戶微信相關基本信息,如頭像、id等 實例:小程序上的

    2024年02月02日
    瀏覽(24)
  • 微信小程序實現登錄授權,并將獲取到的用戶授權信息存儲到數據庫中

    微信小程序實現登錄授權,并將獲取到的用戶授權信息存儲到數據庫中

    官方開發(fā)文檔 注意:在實現授權登錄時,不要使用測試號進行 wx.getUserProfile使用文檔 config文件代碼如下 路由模塊 主要代碼(如果不想多個文件,可以將wxuserHandle.wxuser這個位置內容替換為exports.wxuser的內容) 注意: 在返回token的字符串拼接時,Bearer 后面必須有一個空格 數據

    2024年02月10日
    瀏覽(42)
  • 用戶登錄案例練習(flask+微信小程序)

    用戶登錄案例練習(flask+微信小程序)

    目錄 flask 微信小程序 1.項目后端步驟 具體步驟可參考flask官網:flask 中文網 (1)創(chuàng)建虛擬環(huán)境 (2)激活虛擬環(huán)境 (3)在虛擬環(huán)境里邊安裝Flask (4) 粘貼官網的最小flask代碼 (5)啟動flask服務 2.代碼書寫 3.運行flask測試 ?在index.wxml中添加用戶登錄的標簽 在index.js書寫函數

    2024年02月16日
    瀏覽(25)
  • 微信小程序登錄,解決無法獲取用戶信息方法

    在上面的代碼中,首先定義了應用的AppID和AppSecret。然后,實現了獲取微信用戶access_token的方法getAccessToken()和獲取微信用戶信息的方法getUserInfo()。其中,getAccessToken()方法需要傳入微信小程序登錄時獲取的code,會返回一個包含access_token和openid的Map;getUserInfo()方法需要傳入用戶

    2024年02月11日
    瀏覽(21)
  • 【微信小程序】如何獲取用戶手機號授權登錄

    【微信小程序】如何獲取用戶手機號授權登錄

    目前該接口針對非個人開發(fā)者,且完成了認證的小程序開放(不包含海外主體),也就是說只針對企業(yè)認證小程序開放。若用戶舉報較多或被發(fā)現在不必要場景下使用,微信有權永久回收該小程序的該接口權限。 在使用該接口時,用戶可使用微信綁定手機號進行授權,也添加

    2024年02月16日
    瀏覽(29)
  • java對接微信小程序(登錄&獲取用戶信息)

    java對接微信小程序(登錄&獲取用戶信息)

    用戶通過小程序登錄,進入到平臺系統(tǒng),進行各功能操作; 解決方案: 首先通過對接小程序,用戶通過小程序登錄及授權獲取用戶信息,后端調用接口獲取微信用戶信息,進行保存到數據庫,然后返回token給前端(實際在這里相當于用戶的一個注冊及登錄),前端使用該to

    2024年02月15日
    瀏覽(19)
  • 微信小程序用戶登錄及頭像昵稱設置教程(前后端)

    微信小程序用戶登錄及頭像昵稱設置教程(前后端)

    目錄 1.背景分析 2.具體需求分析 3.前端設計 3.1 用戶登錄 3.2 頭像昵稱填寫(個人信息界面) 4.后端設計 4.1項目架構分析 4.2 代碼分析 實體類 dao層 service層 controller層 工具類 5.nginx部署 6.效果演示 眾所周知,微信小程序獲取用戶信息的接口經過了好幾次調整,目前來說【 wx.

    2024年02月16日
    瀏覽(24)
  • 微信小程序中如何獲取用戶手機號授權登錄

    隨著微信小程序的普及,許多應用程序需要用戶登錄才能提供更好的服務。而獲取用戶手機號碼是驗證用戶身份和確保賬戶安全的重要步驟之一。因此,在本文中,我們將介紹如何在微信小程序中實現手機號授權登錄。 首先,在小程序后臺開發(fā)設置中勾選“獲取手機號”選項

    2024年02月11日
    瀏覽(98)
  • 用戶登錄 openid(微信小程序無師自通三)

    用戶登錄 openid(微信小程序無師自通三)

    每一個微信小程序對應每一個用戶都有一個固定的ID,這個ID就是openid。 博主想把“小汽車保養(yǎng)里程碑單機版”搬上微信小程序,第一件事情應該就是在小程序中能夠識別不同的用戶,每個用戶自己保存自己的數據,需要一個唯一的識別號,就是這個openid。 先看看小程序官方

    2024年02月16日
    瀏覽(25)
  • 微信小程序獲取用戶的openid以及授權登錄拿到用戶頭像及姓名

    微信小程序獲取用戶的openid以及授權登錄拿到用戶頭像及姓名

    在微信小程序中,往往需要將用戶信息錄入自己的數據庫中,就得有一個唯一標記區(qū)分用戶,這個標記就是openid。 我這里用云函數的方式,比較簡單 先創(chuàng)建一個名為getOPenid的云函數 ?在云函數中獲取微信調用上下文cloud.getWXContext ?可選擇性的返回openid、appid、unionid等,可詳細查

    2024年02月12日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包