微信小程式使用者登入前後臺詳解
一. 前端
wx.login({
success: function(res) {
if (res.code) {
//獲取使用者資訊
wx.getUserInfo({
success: function (msg){
//發起網路請求
wx.request({
url: 'https://test.com/onLogin.php' ,
method: 'POST',
header: {
// 'content-type': 'application/json'
'content-type': 'application/x-www-form-urlencoded'
},
data: {
code: res.code,
encryptedData: msg.encryptedData,
iv: msg.iv
},
success: function (data){
console.log(data);
}),
fail: function (res) {
console.log(res)
}
})
}
})
} else {
console.log('獲取使用者登入態失敗!' + res.errMsg)
}
}
});
程式碼詳解:
1. wx.login
返回的res如下圖
code
為登入憑證,使用一次後失效
2. wx.getUserInfo
返回的msg
如下圖
msg裡的encryptedData
和iv
都非常重要的敏感資訊,後面講後臺介面時會講到
3. data
為我們後臺登入介面返回的資料(業務資料)
二. 後端
1. 第一步,requier wxBizDataCrypt.php
檔案,官方檔案點我下載
2. 通過code
換取 session_key,openid,unionid
會話金鑰,按照官方文件來即可,介面地址:
https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code
返回的是包含openid和unionid的json字串(多平臺應該是取unionid,進行查詢資料庫的操作,獲取使用者在另外平臺上的資料了,unionid機制見文末解析),轉換成陣列格式如下圖
錯誤時返回的json包如下,
{"errcode": 40029,"errmsg": "invalid code"}
3. 獲取使用者詳細資訊
$pc = new WXBizDataCrypt($appid, $sessionKey);
$errCode = $pc->decryptData($encryptedData, $iv, $data );
encryptedData
和iv
為前臺傳過來的引數(密文)- 若
$errCode !=0
則驗證失敗,介面應該返回失敗資料 $data
為解密後的使用者基本資訊,json格式,轉換陣列後如下圖
- 通過後就獲取到使用者詳細資訊了
- 末尾返回的資料就是上面前端的程式碼詳解裡的data引數啦
openid與unionid
同一使用者
對同一應用
(公眾號、小程式等)的openid是相同的不同使用者
對不同應用
的openid是不同的- 同一個微信開放平臺帳號下的應用,使用者的unionid是唯一的
- 不同應用若想獲取同一使用者在其他應用資料,應先根據unionid獲取使用者在該平臺的openid,然後根據openid獲取相應資料
- 更多詳情參考官方文件
相關推薦
微信小程式使用者登入前後臺詳解
一. 前端 wx.login({ success: function(res) { if (res.code) { //獲取使用
微信小程式setData()方法的詳解以及對陣列/json操作
一、setData()方法: 1、引數接受一個物件,以key,value的形式表示; 2、引數和變數名稱一致,可用一個值代替(es6新語法特性) 如上圖所示,在this.data中設定ceshi這條資料,在方法中,我們定義ceshi變數讓其等於that.data.ce
微信小程式 資料訪問例項詳解
先簡單說一下,小程式的結構 如圖所示 1、每個檢視(.wxml)只需要新增對應名字的指令碼(.js)和樣式(.wxss)就可以了,不需要引用,page下面的指令碼以及樣式都是繼承至最外面的app.js , app.wxcss 2、指令碼也就是.js檔案,他有固定格式:p
微信小程式畫布使用範例詳解
今天關於微信小程式的畫布,做了個簡單的範例,大家來看看吧 wxml的程式碼 <canvas style="width: 300px; height: 200px;" canvas-id="fourCanvas" bindtouchstart="star
微信小程式上傳檔案詳解
做微信小程式難免會遇到上傳檔案的問題。今天就給大家說一個簡單的上傳檔案的例子吧 wxml程式碼 <button bindtap="upload">上傳檔案</button> js程式碼 Page({ data:{
微信小程式navigateTo資料傳遞詳解
本文主要和大家介紹微信小程式使用navigateTo資料傳遞的例項的相關資料,希望通過本文能幫助到大家,需要的朋友可以參考下,希望能幫助到大家。 微信小程式使用navigateTo資料傳遞的例項 1,傳遞基本資料型別 index.js 傳送頁JS Page({
微信小程式之轉發流程詳解
信小程式之獲取轉發到群資訊 微信小程式轉發是個有意思的流程,涉及以下4個方法: Page.onShareAppMessage({}) 設定右上角“轉發”配置,及轉發後回撥函式返回 shareTicket 票據wx.showSahreMenu() 使用者點選右上角後,顯示“
微信小程式授權登入獲取使用者資訊詳解
今天來說一下微信小程式的授權登入獲取使用者資訊,首先我們看微信提供的小程式開發文件: https://blog.csdn.net/qq_41971087/article/details/82466647 微信登入的流程和步驟: 步驟:(個人): 第一步:微信小程式
微信小程式Ⅴ [獲取登入使用者資訊,重點openID(詳解)]
♩ 背景 其實這篇文章幾個月前就寫完了,但是這段時間,微信小程式官方文件有了更新,同事在我自己的實際操作過程中,發先之前寫的過於繁雜,所以現在進行簡化梳理,歡迎指摘. 語言框架:Th
微信小程式獲取登入手機號
小程式獲取登入使用者手機號。 因為需要使用者主動觸發才能發起獲取手機號介面,所以該功能不由 API 來呼叫,需用 <button> 元件的點選來觸發。 首先,放置一個 button 按鈕,將 button 的 open-type 的屬性值設為 getPhoneNu
微信小程式之登入頁例項 —— 微信小程式實戰系列(5)
提供一個登入頁的案例,供同學們使用 專案效果圖: 目錄結構: 圖片資源: name.png key.png loginLog.jpg login.wxml: <view c
微信小程式的登入過程簡介
對於微信而言, 小程式算是第三方了, 那麼, 小程式是如何登入的呢? 微信肯定不能把密碼給小程式, 讓小程式來登入啊, 小程式甚至無法獲取微信的微訊號。 在這裡, 我們需要徹底把微信和小程式分開, 割裂來看, 才好理解。 那小程式是怎樣來登入
微信小程式(編輯登入頁面以及頁面跳轉)
第一步 建立新的qq郵箱開通小程式第二步 下載適合本電腦的版本 微信開發工具第三步 開始建立 wxml為新增頁面程式碼<view class='container'> <view class='header'>登入頁面</view>
微信小程式之登入頁例項
<view class="container"> <view class="login-icon"> <image class="login-img" src="../images/loginLog.jpg"><
微信小程式授權登入介面
1.首先接收前端傳過來的code 2.帶上appid,secret以及code去請求微信,獲取openid,那倒openid就可以獲取使用者的資訊了 獲取到openid,將openid返回給前端,前
微信小程式開發登入問題
最近微信小程式發現一個很奇怪的問題,授權的登入問題,同事可以登入上去,我的就登入不上去,還一直顯示登入失敗,只有我把資料寫死了才可以進去 經過多次的列印返回資料以及測試介面,最後問了好幾個小夥伴發現因為用的不是公司的appid導致的,需要授權拉進專案開發人員裡面,然後使用公司的就可以了,居
微信小程式 保持登入狀態(自己服務端的session)的解決方案(java)
問題:由於wx.request()發起的每次請求對於伺服器來說都是不同的會話(wx.request()請求是先經過微信伺服器再到達我們的伺服器),這樣導致後續請求都相當於未登入的狀態。解決方案:session資訊存放在cookie中以請求頭的方式帶回給服務端JSESSIONI
微信小程式之登入,模板訊息,服務通知
1.登入流程圖 1).前端呼叫wx.login()獲取code 2).前端呼叫wx.request()傳送code給後端 3).後端根據appid(後臺取得)+appsecret(後臺取得)+code(前端傳送)傳送到微信介面,得到session_key+openid等介面地
微信小程式授權登入流程總結
1.登陸只需傳送code到後臺,後臺獲取openid,根據openid到資料庫中查詢使用者資訊,若有則返回使用者資訊,若沒有將該openid插入資料庫, 2.後臺生成token(可以是使用者id和其他隨機串組合的加密字串),返回前臺token,和使用者資訊 3.前臺判斷使用者
微信小程式java登入授權解密獲取unionId(填坑)
官方流程圖: 第一步:獲取code 說明: 小程式呼叫wx.login() 獲取 臨時登入憑證code ,並回傳到開發者伺服器。 開發者伺服器以code換取 使用者唯一標識openid 和 會話金鑰session_key。 之後開發者伺服器可以根據